3.1 验证Docker正常启动docker
使用docker info 命令,返回全部容器和镜像的数量、docker版本、使用的执行驱动和存储驱动以及Docker的基本配置等。以前说过Docker是基于client-server架构,它有一个docker程序,既能作客户端又能作服务器端。做为客户端时,docker程序向Docker守护进程发送请求,而后再对返回的请求结果进行处理。shell
3.2 运行第一个容器ubuntu
可以使用docker run 命令建立容器。它提供了容器的建立到启动功能。运行bash
docker run -i -t ubuntu /bin/bash
运行命令后Docker会检查本地是否存在ubuntu镜像,若是没有就会链接Docker Hub Registry查看是否有该镜像,一旦找到就会下载并保存到本地宿主机中。服务器
随后Docker在文件系统内部用这个镜像建立了一个新容器。它拥有本身的IP地址,以及一个用来和宿主机进行通讯的桥接网络接口。网络
当容器建立完毕以后,Docker会执行容器中的/bin/bash命令,这时就能够看到容器内的shell了。架构
3.3 使用第一个容器命令行
经过启动咱们以root用户登陆到了新容器红。这是一个完整的ubuntu系统。rest
输入exit就能够从容器返回到宿主机的命令行了。同时容器也中止运行。可是容器仍然是存在的。可使用docker ps -a 命令查看当前系统中的容器列表。日志
docker ps命令只显示正在运行的容器,添加-a参数列出全部容器。-l 参数列出最后一次运行的容器,包括正在运行和已经中止的。
能够看出有三种方式可惟一指代一个容器:长UUID、短UUID和名称。
3.4 容器命名
以前建立容器时Docker自动生成了一个随机名称。若是建立容器时想指定名称可使用--name参数。
docker run --name ivan_container -i -t ubuntu /bin/bash
一个合法的容器名称只能包含如下字符:小写字母、大写字母、数字、下划线、圆点、横线。
容器的命名是惟一的
docker rm 容器名 能够删除容器。
3.5 从新启动已中止的容器
docker start 容器名 docker start 容器ID
3.6 附着在容器上
Docker容器从新启动时,会沿用docker run 命令时指定的参数来运行,所以容器从新启动后会运行一个交互式会话shell。
能够用“docker attach 容器名/容器ID“命令从新附着到该容器的会话上。运行完命令后须要按下回车进入该会话。
3.7 建立守护式容器
除了上面建立的交互式运行的容器,也能够建立长期运行的守护式容器。它没有交互式会话,很是适合运行应用程序和服务。大多数时候都须要以守护式来运行容器。
docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1 done"
在docker run上使用参数-d,容器会被放到后台运行。
3.8 查看容器日志
docker logs 容器名
-f 参数监控容器实时日志
docker logs -f 容器名
用Ctrl + C退出日志监控。
--tail 行数 获取最后几行日志
docker logs --tail 10 容器名
使用
docker logs --tail 0 -f 容器名
监控某个容器的最新日志而没必要读取整个日志文件。
使用 -t 参数为每条日志项加上时间戳。
docker logs -ft 容器名
3.9 查看容器内的进程
docker top 容器名
3.10 在容器内部运行进程
在Docker 1.3以后,能够经过docker exec命令在容器被额外启动新进程。能够在容器内运行的进程有两种类型:后台任务和交互式任务。
后台任务的例子:
docker exec -d 容器名 touch /etc/new_config_file
-d 表示须要运行一个后台进程。以后是指定运行的容器和执行的命令。本例中新建了一个空文件。
交互任务的例子:
docker exec -t -i 容器名 /bin/bash
3.11 中止守护式容器
docker stop 容器名
docker stop 命令会向Docker容器进程发送SIGTERM信号。若是想快速中止某个容器,可使用docker kill命令向容器进程发送SIGKILL信号。
docker ps -n x 命令会显示最后x个容器,不论容器正在运行仍是已经中止。
3.12 自动重启容器
建立容器时能够经过--restart参数让Docker自动从新启动该容器。--restart标志会检查容器的退出代码,并据此来决定是否要重启容器。
docker run --restrart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
--restart标志被设置为always,不管容器的退出代码是什么,Docker都会自动重启该容器。除了always,还能够设置为on-failure,这样只有当容器的退出代码为非0值得时候,才会自动重启。另外on-failure还接收一个可选的重启次数参数:
--restart=on-failure:5
这样当容器退出代码非0时,Docker会尝试自动重启该容器,最后重启5次。
--restart是1.2.0版本引入的。
3.13 详细的容器信息
docker inspect 容器名
查看容器的详细信息。使用-f --format来选定要查看的内容:
docker inspect --format='{{.State.Running}}' 容器名
查看容器的运行状态。
docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器1 /容器2
查看容器的IP地址,能够同时制定多个容器,如上例所示。
--format -f支持完整的Go语言模板。
还能够浏览/var/lib/docker目录来深刻了解Docker的工做原理。该目录存放着Docker镜像、容器以及容器的配置。全部的容器都保存在/var/lib/docker/containers目录下。
3.14 删除容器
使用docker rm删除容器。
运行中的docker容器是没法删除的。必须先经过docker stop或docker kill 命令中止容器,才能将其删除。
目前没有办法一次删除全部容器,不过能够经过小技巧来删除:
docker rm 'docker ps -a -q'
-a 表示列出全部容器,-q表示只须要返回容器的ID不返回其余信息。