docker 基本操作
一、镜像管理
1,下载镜像
我们使用 docker pull 命令从 Docker Hub 上下载指定镜像:
hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成。
1
|
docker pull helle-world |
2,搜索镜像
使用 docker search 命令可以搜索 Docker Hub 中的镜像。
3,查看已下载的镜像
使用 docker images 命令可以查看所有已下载到本地的镜像。
4,删除镜像
使用 docker rmi 命令可以删除下载到本地的镜像。
注意:删除镜像前要先删除对应的容器(不管是正在运行,还是已经停止的)
1
|
docker rmi hello-world |
二、运行容器
(1)docker run 命令支持带上各种参数运行容器。下面以运行一个 Apache 服务为例。
(2)默认情况下,容器启动后 docker 会自动为容器分配名字。使用 --name 可以人工指定容器的名字。
-d:表示以后台方式启动容器。
-p 80:8080:表示启动后将容器的 80 端口映射到 host 的 8080 端口。
-p 80:8080:表示启动后将容器的 80 端口映射到 host 的 8080 端口。
1
|
docker run -d -p 8080:80 httpd |
(2)默认情况下,容器启动后 docker 会自动为容器分配名字。使用 --name 可以人工指定容器的名字。
1
|
docker run --name "hangge_http_server" -d httpd |
3,让容器能够自动重启
(1)如果希望容器(比如服务类容器)因某种错误而停止运行时,能够自动重启,在启动时设置 --restart 就可以到达效果。注意: --restart 策略只在启动进程正常退出或发生错误时有效。如果容器时因为执行 docker stop 或者 docker kill 退出,则不会自动重启。
1
|
docker run --restart=always httpd |
(2)--restart=always 表示无论容器因何种原因退出(包括正常退出),都立即重启。如果改成 --restart=on-failure:3,则表示如果启动进程退出代码非 0,则重启容器,且最多重启 3 次。
1
|
docker run --restart=on-failure:3 httpd |
4,查看正在运行的容器
(1)使用 docker ps 或者 docker container ls 命令可以显示哪些容器正在运行(两个命令效果一样):
(2)前面两个命令只能查看当前正在运行的容器,使用 docker ps -a 或者 docker container ls -a 命令则会显示所有状态的容器(包括已经退出的)
三、进入容器
1,使用 exec 命令进入容器
容器运行后,我们可能需要进到容器里去做一些工作,比如查看日志、调试、启动其它进程等。有两种方法进入容器,它们分别是 attach 和 exec:
- attach 直接进入容器启动命令的终端,不会启动新的进程。
- exec 则是在容器中打开新的终端,并且可以启动新的进程。
(1)首先我们启动一个 Apache Server 容器。
(2)我们使用 docker exec -it 以交互模式打开 pseudo-TTY,执行 bash,其结果就是打开了一个 bash 终端。
(3)进入到容器中,容器的 hostname 就是其“短ID”。
1
|
docker exec -it 0d0553632642 bash |
(3)进入到容器中,容器的 hostname 就是其“短ID”。
(4)执行 exit 则可退出容器,回到 docker host。
四、停止、重启、删除容器
1,停止运行的容器
(1)通过 docker stop 可以停止运行的容器,下面根据容器名字来停止。
1
|
docker stop hangge_http_server |
(2)如果想要快速停止容器,可以使用 docker kill 命令。
1
|
docker kill hangge_http_server |
2,启动停止的容器
使用 docker start 可以重新启动处于停止状态的容器,并且保留容器的第一次启动时的所有参数。
1
|
docker start hangge_http_server |
3,重启容器
docker restart 可以重启容器,其作用就是依次执行 docker stop 和 docker start。
1
|
docker restart hangge_http_server |
4,暂停/恢复容器
(1)如果只是希望容器暂停工作一段时间,比如对容器的文件系统大打个快照,或者 docker host 需要使用 CPU,这是可以执行 docker pause 将其暂停。
1
|
docker pause hangge_http_server |
(2)处于暂停状态的容器不会占用 CPU,直到通过 docker unpause 恢复运行。
(1)使用 docker 一段时间后,host 上可能会有大量已经退出了的容器。我们可以使用 docker rm 命令删除。下面通过容器的短 id 删除:
1
|
docker unpause hangge_http_server |
5,删除容器
1
|
docker rm 9d3d9622aafa |
(2)docker rm 一次可以指定多个容器删除。
1
|
docker rm 9d3d9622aafa e12cc2a63fd3 |
(3)如果希望批量删除所有已经退出的容器,可以执行如下命令。
1
|
docker rm -v $(docker ps -aq -f status=exited) |
原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2402.html#
文章出处:http://www.cnblogs.com/aaron-agu/
只有毅力和决心才能使人真正具有价值!