java系统找不到指定文件怎么解决
261
2022-10-19
Docker综合应用
文章目录
一、容器简介
1.1 容器的定义1.2 镜像的定义
二、简单安装容器三、容器常用命令四、主要命令使用实例
一、容器简介
1.1 容器的定义
Docker的基本组成:镜像(image)、容器(container)、仓库(repository) Docker利用容器(container)独立运行的一个或一组应用。容器是用镜像创建的运行实例,每个容器都行相互隔离的、保证安全的平台。 容器是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
1.2 镜像的定义
UnionFS(联合文件系统):Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
镜像加载原理:docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
二、简单安装容器
环境: 系统版本:CentOS Linux release 7.6.1810 (Core) 内核版本:3.10.0-957.el7.x86_64
#Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令:[root@186 ~]# yum install docker* -y...........................................................##如果报错就安装三个依赖包,yum-utils提供yum-config-manager包,用来管理yum配置文件;lv2和device-mapper-persistent-data为dockerdevicemapper存储设备的必须依赖[root@186 ~]# yum install -y yum-utils device-mapper* lvm2................................................................................................##安装成功就启动服务,查看服务状态检查是否启动成功[root@186 ~]# systemctl start docker[root@186 ~]# systemctl enable docker.service Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.[root@186 ~]# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since 四 2019-08-15 15:00:22 CST; 16s ago Docs: Main PID: 8229 (dockerd-current) CGroup: /system.slice/docker.service ├─8229 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtim... └─8234 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics...8月 15 15:00:20 186 dockerd-current[8229]: time="2019-08-15T15:00:20.993812526+08:00" level=info msg="libcontainerd: n... 8234"8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.077694666+08:00" level=info msg="Graph migration ...conds"8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.078553209+08:00" level=info msg="Loading containe...tart."8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.099355199+08:00" level=info msg="Firewalld running: true"8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.261051865+08:00" level=info msg="Default bridge (...dress"8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.425824071+08:00" level=info msg="Loading containe...done."8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.492111727+08:00" level=info msg="Daemon has compl...ation"8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.492745036+08:00" level=info msg="Docker daemon" c...1.13.18月 15 15:00:22 186 systemd[1]: Started Docker Application Container Engine.8月 15 15:00:22 186 dockerd-current[8229]: time="2019-08-15T15:00:22.500602634+08:00" level=info msg="API listen on /v....sock"Hint: Some lines were ellipsized, use -l to show in full.##查看docker版本。docker版本为1.13.1,API版本为1.26[root@186 ~]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7f2769b/1.13.1 Built: Mon Aug 5 15:09:42 2019 OS/Arch: linux/amd64Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-102.git7f2769b.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7f2769b/1.13.1 Built: Mon Aug 5 15:09:42 2019 OS/Arch: linux/amd64 Experimental: false##下载官方我CentOS镜像到本地并确认[root@186 ~]# docker pull centosUsing default tag: latestTrying to pull repository docker.io/library/centos ... latest: Pulling from docker.io/library/centos8ba884070f61: Pull complete Digest: sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3cStatus: Downloaded newer image for docker.io/centos:latest[root@186 ~]# docker images centosREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/centos latest 9f38484d220f 5 months ago 202 MB##切入到容器中,我们可以看到 CentOS 容器已经被启动,并且我们看到了 bash 提示符。在 docker 命令中我们使用了 “-i 捕获标准输入输出”和 “-t 分配一个终端或控制台”选项。断开输入exit[root@186 ~]# docker run -i -t centos /bin/bash[root@31a625f874c1 /]# ip abash: ip: command not found[root@31a625f874c1 /]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ##显示当前正在运行容器的列表[root@186 ~]# docker ps -a [root@186 ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES139e4dee63e1 centos "/bin/bash" 19 seconds ago Exited (0) 18 seconds ago sad_tesla31a625f874c1 centos "/bin/bash" 26 minutes ago Exited (127) 25 minutes ago zealous_saha
三、容器常用命令
管理命令:
container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secret 管理Docker secrets service 管理服务 stack 管理Docker stacks swarm 管理Swarm集群 system 查看系统信息 volume 管理卷
如:docker container ls 显示所有容器
普通命令:
attach 进入一个运行的容器build 从一个DockerFile构建镜像commit 从容器创建一个镜像cp 从容器和主机文件系统之间拷贝文件 create 创建一个容器diff 检查容器文件系统上的更改events 从服务器获取实时事件exec 在正在运行的容器中运行命令export 将容器的文件系统导出为tar存档history 显示镜像的历史记录images 查看镜像列表import 从归档文件中创建镜像info 显示系统范围的信息inspect 返回Docker对象的低级信息kill kill运行中的容器load 从存档或者STDIN加载镜像login 登陆docker镜像仓库logout 退出docker镜像仓库logs 获取一个容器的日志pause 暂停一个或多个容器中的所有进程port 查看端口映射或容器的特定映射列表ps 查看容器列表pull 从镜像仓库拉取镜像push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库rename 重命名容器restart 重启容器rm 删除容器rmi 删除镜像run 创建一个新的容器并运行一个命令save 将指定镜像保存成 tar 归档文件search 从Docker Hub搜索镜像start 启动容器stats 实时显示容器资源使用情况的统计信息stop 停止容器tag 标记本地镜像,将其归入某一仓库top 展示一个容器中运行的进程unpause 恢复容器中所有的进程update 更新容器配置version 显示Docker的版本信息wait 阻塞直到容器停止,然后打印退出代码如:docker images 显示所有镜像3.1 run创建容器docker run 命令格式Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -d, --detach=false 指定容器运行于前台还是后台,默认为false -i, --interactive=false 打开STDIN,用于控制台交互 -t, --tty=false 分配tty设备,该可以支持终端登录,默认为false -u, --user="" 指定容器的用户 -a, --attach=[] 标准输入输出流和错误信息(必须是以非docker run -d启动的容器)-w, --workdir="" 指定容器的工作目录 -c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用 -e, --env=[] 指定环境变量,容器中可以使用该环境变量 -m, --memory="" 指定容器的内存上限 -P, --publish-all=false 指定容器暴露的端口 -p, --publish=[] 指定容器暴露的端口 -h, --hostname="" 指定容器的主机名 -v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录 --volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录--cap-add=[] 添加权限,权限清单详见: --cap-drop=[] 删除权限,权限清单详见: --cidfile="" 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法 --cpuset="" 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU --device=[] 添加主机设备给容器,相当于设备直通 --dns=[] 指定容器的dns服务器 --dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件 --entrypoint="" 覆盖image的入口点 --env-file=[] 指定环境变量文件,文件格式为每行一个环境变量 --expose=[] 指定容器暴露的端口,即修改镜像的暴露端口 --link=[] 指定容器间的关联,使用其他容器的IP、env等信息 --lxc-conf=[] 指定容器的配置文件,只有在指定--exec-driver=lxc时使用 --name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 --net="bridge" 容器网络设置: bridge 使用docker daemon指定的网桥 host //容器使用主机的网络 container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源 none 容器使用自己的网络(类似--net=bridge),但是不进行配置 --privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities --restart="no" 指定容器停止后的重启策略: no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启 --rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) --sig-proxy=true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理
示例:
[root@186 ~]# docker run -p 8090:8080 -p 50000:50000 --restart always --link Redis:redis --name jenkins -v /home/jenkins:/home/jenkins_home --privileged=true dokcer.io/jenkins/jenkins -p:把容器的8080端口映射到宿主机8090上 -v:主机的目录/home/jenkins映射到容器的目录/home/jenkins_home --name:给容器起个名字jenkins,docker.io/jenkins/jenkins是你下载的镜像 --restart:always 容器退出时总是重启 --privileged=true:挂载主机目录Docker访问出现Permission denied的解决办法 --link:为redis容器起个别名Redis,访问的时候使用别名Redis
四、主要命令使用实例
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~