docker(4、容器1)1、容器启动 2、 进入容器 3、容器常用操作

          

1、容器启动

容器启动时执行的命令:

  1. CMD 指令。

  2. ENDPOINT 指令。

  3. 在 docker run 命令行中指定

例如下面的例子:

容器启动时执行 pwd,返回的 / 是容器中的当前目录。 
执行 docker ps 或 docker container ls 可以查看 Docker host 中当前运行的容器:

怎么没有容器?用 docker ps -a 或 docker container ls -a 看看。

-a 会显示所有状态的容器,可以看到,之前的容器已经退出了,状态为Exited

容器长期运行

1、执行一个长期运行的命令来保持容器的运行状态。例如执行下面的命令:

docker run -d centos /bin/sh -c "while true;do sleep 1;done"

我们可以加上参数 -d 以后台方式启动容器。
while 语句让 bash 不会退出。我们可以打开另一个终端查看容器的状态:

NAMES 字段显示容器的名字,在启动容器时可以通过 --name 参数显示地为容器命名,如果不指定,docker 会自动为容器分配名字。
docker stop  (id或名称) 停止容器
docker history 这个命令是通过 CMD 指定的

 2、 进入容器

有两种方法进入容器:attach 和 exec。

docker attach

通过 docker attach 可以 attach 到容器启动命令的终端,例如:

注:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 attach 终端

docker exec

通过 docker exec 进入相同的容器:

docker exec -it 969fac2fe41 bash 

说明如下:
① -it 以交互模式打开 pseudo-TTY,执行 bash,其结果就是打开了一个 bash 终端。
② 进入到容器中,容器的 hostname 就是其 “短ID”。
③ 可以像在普通 Linux 中一样执行命令。ps -elf 显示了容器启动进程while 以及当前的 bash 进程。
④ 执行 exit 退出容器,回到 docker host。
docker exec -it <container> bash|sh 是执行 exec 最常用的方式。

attach VS exec
attach 与 exec 主要区别如下:
attach 直接进入容器 启动命令 的终端,不会启动新的进程。
exec 则是在容器中打开新的终端,并且可以启动新的进程。
如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。
当然,如果只是为了查看启动命令的输出,可以使用 docker logs 命令

通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 docker  exec -it 进入容器。
工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行

通过 --name 为容器命名。重命名容器可执行docker rename

 3、容器常用操作

stop/start/restart 容器
通过 docker stop 可以停止运行的容器。
容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号。
对于处于停止状态的容器,可以通过 docker start 重新启动。
docker start 会保留容器的第一次启动时的所有参数。
docker restart 可以重启容器,其作用就是依次执行 docker stop 和docker start。

重点 容器可能会因某种错误而停止运行,实现容器自动重启启动容器时设置 --restart 就可以达到

--restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。

该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。

pause/unpause 容器

有时我们只是希望暂时让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause

处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。

删除容器

通过 docker rm 删除。 docker rmi 是删除镜像

docker rm 一次可以指定多个容器

docker rm -v $(docker ps -aq -f status=exited)  删除状态为exited的容器

发布了62 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cojn52/article/details/104626035