下面看另一种启动容器的方式:
[root@docker ~]# docker run CentOS /usr/bin/bash -c ls / Unable to find image 'centos:latest' locally latest: Pulling from library/centos 8a29a15cefae: Pull complete Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" About a minute ago Exited (0) About a minute ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 28 minutes ago Up 17 minutes 80/tcp gallant_feynman-c参数表示的是需要执行的命令,这种方式适用于一次执行,Exited (0) 表示正常正确退出,及终止运行。
docker run的命令执行流程为:先从本地查找镜像(本地没有image不表示容器不依赖image),如果没有会从公共仓库中下载;再通过镜像创建并且启动一个容器;分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;从宿主机配置的网桥接口中桥接一个虚拟接口到容器中;分配一个地址池中的IP地址给容器;执行用户指定的应用程序;执行之后容器被终止(后台运行除外)。
后台运行:run 后面加参数-d即可。
2、容器运行与终止想要在运行中的容器停下来,使用docker stop 命令
命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER...]
实例演示:
[root@docker ~]# docker stop a1a2e8468189 a1a2e8468189 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 9 minutes ago Exited (0) 9 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 36 minutes ago Exited (0) 3 seconds ago gallant_feynman 3、容器的进入想要进入容器进行相应操作时可以使用docker exec命令进入运行着的容器。
命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
[root@docker ~]# docker ps -a #检查容器是否是运行状态(up) CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 12 minutes ago Exited (0) 12 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 38 minutes ago Up 4 seconds 80/tcp gallant_feynman [root@docker ~]# docker exec -it a1a2e8468189 /bin/bash #进入伪终端 root@a1a2e8468189:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@a1a2e8468189:/# exit #使用exit退出伪终端 exit [root@docker ~]# 4、容器的导出和导入类似镜像,用户也可以将容器从一台机器迁移到另一台机器。在迁移过程中,首先需要将已经创建好的容器导出为文件,使用docker export实现,无论这个容器是处于运行状态还是停止状态均可以导出。导出之后可将导出文件传输到其他机器,通过对应的导入命令实现迁移过程。
容器导出命令:docker export
命令格式:docker export [OPTIONS] CONTAINER
实例演示:一个运行状态一个停止状态,都演示
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 21 minutes ago Exited (0) 21 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 48 minutes ago Up 9 minutes 80/tcp gallant_feynman运行中的容器导出:
[root@docker ~]# docker export a1a2e8468189 > nginx_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx nginx_contain 公共 模板 视频 图片 文档 下载 音乐 桌面 [root@docker ~]# ll 总用量 253448 -rw-------. 1 root root 1954 4月 6 08:49 anaconda-ks.cfg -rw-r--r--. 1 root root 2002 4月 6 08:50 initial-setup-ks.cfg -rw-------. 1 root root 130618880 4月 6 14:04 nginx #镜像存出的文件 -rw-r--r--. 1 root root 128899072 4月 6 16:04 nginx_contain #容器导出文件 二者权限不同终止的容器导出:
[root@docker ~]# docker export 4835176a7d8e > centos_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx_contain 模板 图片 下载 桌面 centos_contain nginx 公共 视频 文档 音乐导出的文件从本地拷贝到远程服务器,之后使用docker import命令导入,成为镜像
容器导入命令:docker import
命令格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]