在上一篇文章 Docker 入门指南(二):运行第一个容器 中,我介绍了如何在安装 Docker 的基础上,运行第一个容器,这篇文章是 Docker 容器的各种操作,包括新建容器、启动、关闭、重启 已经查看容器运行情况。
一、运行交互式容器
运行容器的命令是 docker run ,这个命令提供了 Docker 容器创建和启动的功能。可以通过在 docker run 命令后面添加 -it 参数来创建交互式容器,-i参数保证容器中STDIN是开启的,-t 参数告诉 Docker 要为创建的容器分配一个伪tty终端,这样容器才能提供一个交互式的shell。创建命令为:
docker run -it ubuntu /bin/bash
这条命令中 ubuntu 告诉 Docker 基于那个镜像创建容器,/bin/bash 则是创建容器后执行的命令。
这样就可以创建一个 ubuntu 镜像的容器,创建成功后,Docker 会执行容器中的/bin/bash 命令,然后就可以看到容器中的shell了。
执行过程:
[root@VM_71_7_centos ~]# docker run -it ubuntu /bin/bash Unable to find image 'ubuntu:latest' locally latest: Pulling from library/ubuntu 6d28225f8d96: Pull complete 166102ec41af: Pull complete d09bfba2bd6a: Pull complete c80dad39a6c0: Pull complete a3ed95caeb02: Pull complete Digest: sha256:5718d664299eb1db14d87db7bfa6945b28879a67b74f36da3e34f5914866b71c Status: Downloaded newer image for ubuntu:latest root@515a73fb934a:/#
要停止交互式容器,只需要输入 exit 命令,就可以停止容器。
二、创建守护式容器
守护式容器和交互式容器不同,可以长期运行,但是没有交互式会话,非常适合运行应用程序和服务。
使用 -d 参数可以创建守护式容器,命令为:
docker run -d ubuntu
创建成功会返回容器的长id,过程如下:
# docker run -d ubuntu 4021afee76279836d4b497b55a8e921f1ade8e993bebfe0f8a02b799a2a7df7a
三、容器命名
在创建容器时,如果不命名,这Docker 会为每一个容器自动生成一个随机的名字,比如创建的上一个容器名为jovial_minsky。如果我们想为容器指定一个名字,可以在创建时使用 –name 参数实现。
例如:
# docker run --name lxx1_container -it ubuntu /bin/bash root@dd404ce19079:/#
这样就成功创建了一个命名为lxx1_container 的容器,查看所有的容器可以看到:
四、停止守护式容器
要停止一个守护式容器,命令为 docker stop ,可以使用容器名,也可以使用容器的ID.命令分别为:
docker stop shouhushi
或者
docker stop 72856d1af179
五、重新启动已经停止的容器
使用docker start 命令可以重新启动已经停止运行的容器,和停止容器一样,可以使用容器名,也可以使用容器ID来重新启动这个容器,命令为:
docker start ubuntu
或者为
docker start 72856d1af179
六、附着到容器上
当我们想与已经运行的交互式容器进行交互时,可以使用 docker attach 附着在容器上,与容器进行交互。命令为:
docker attach ubuntu_docker
或者也可以使用容器的ID ,如:
docker attach 515a73fb934a
七、查看容器日志
当我们创建了一个在后台运行的守护型容器时,可以使用 docker logs 命令来获取容器的日志,从而可以看到容器正在进行的工作,代码为:
docker logs ubuntu_docker
如果要持续监控容器的日志信息,可以添加 -f 参数,详细命令为:
docker logs -f 515a73fb934a
八、查看容器内的进程
可以使用 docker top 命令查看容器进程,代码和输出为:
docker top 515a73fb934
九、在容器内部运行进程
我们可以使用 docker exec 命令在容器内部额外启动新进程。可以通过添加 -d 或者 -it 参数来启动后台任务或者交互式任务。其命令分别为:
启动后台任务:
docker exec -d 515a73fb9 touch /etc/test.conf
该命令在ID 为515a73fb9 的容器内部新建了一个test.conf的空白文件。
启动交互式任务:
docker exec -it 515a73fb /bin/bash
该命令在515a73fb容器内创建了一个新的bash会话。
十、获得详细的容器信息
除可以使用docker ps 获取容器的信息外,还可以通过 docker inspect 来获得更多的容器信息,可以获得容器的名称、命令、网络配置等各种详细信息。使用 docker inspect 获得的信息如下:
[root@VM_71_7_centos ~]# docker inspect 515a73fb934a [ { "Id": "515a73fb934aa078634c1bd94feb461304b4e31dd68b7a421d411753c099b445", "Created": "2016-05-27T01:50:52.449195308Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 21476, "ExitCode": 0, "Error": "", "StartedAt": "2016-05-27T13:22:58.436135515Z", "FinishedAt": "2016-05-27T13:22:03.437747018Z" }, "Image": "sha256:c5f1cf30c96b5b55c0e6385f2ecb791790eacfdc874500ec3dd865789e358dd1", …………
十一、删除容器
当我们不需要使用这个容器后,可以使用 docker rm 命令来删除这个容器。如:
docker rm 515
删除成功会返回删除的容器名或者容器 ID。
如果容器正在运行,删除会发生错误,提示信息如下:
Error response from daemon: You cannot remove a running container 515a73fb934a. Stop the container before attempting removal or use -f
删除前必须先停止容器,然后删除,或者也可以使用 docker rm -f 命令来删除运行中的容器。
555