Docker入门之-容器(一)

容器的基本操作:运行容器


一、运行容器

docker run 是启动容器的方法,在前面学习Dockerfile 时已经知道,可以通过CMD 、ENDPOINT 指令和docker run 命令指定容器启动时执行的命令;

如下所示:容器启动时执行 pwd,返回的 / 是容器中的当前目录

 执行 docker ps 或 docker container ls 可以查看 Docker host 中当前运行的容器:

 用 docker ps -a 或 docker container ls -a 看看,-a 会显示所有状态的容器;

 之前的容器已经退出了,状态为Exited;那么问题来了,如何让容器长期运行?

容器的生命周期依赖于启动时执行的命令,只要该命令不结束,容器也就不会退出;

例如执行如下命令:

docker run ubuntu /bin/bash -c "while true; do sleep 1; done"

while循环保证了bash不会退出,另外打开一个终端,查看容器的状态,具体结果:

可见容器仍处于运行状态。不过这种方法有个缺点:它占用了一个终端;

我们可以加上参数 -d 以后台方式启动容器;

docker run -d  ubuntu /bin/bash -c "while true; do sleep 1; done"

具体结果如下:

 注意:CONTAINER ID 是容器的 “短ID”,前面启动容器时返回的是 “长ID”,短ID是长ID的前12个字符;NAMES 字段显示容器的名字,在启动容器时可以通过 --name 参数显示地为容器命名,如果不指定,docker 会自动为容器分配名字;

对于容器的后续操作,我们需要通过 “长ID”、“短ID” 或者 “名称” 来指定要操作的容器

比如下面停止一个容器:docker stop 短id

 但是,容器在工作中更常见的用途是运行后台服务,譬如:

 用 --name 指定了容器的名字,参数 -d 以后台方式启动容器,

docker run --name "my_httpd_server" -d httpd

看到容器运行的命令是httpd-foreground,通过 docker history 可知这个命令是通过 CMD 指定的;

二、进入容器的两种方法

经常需要到容器里去查看日志、调试、启动其他进程等,有两种方法进入容器:attach 和 exec。

第一种方式:docker attach

 第二种方式:docker exec

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

 其中,-it 以交互模式打开 pseudo-TTY,执行 bash,其结果就是打开了一个 bash 终端;

 可以像在普通 Linux 中一样执行命令。ps -elf 显示了容器启动进程while 以及当前的 bash 进程;

docker exec -it <container> bash|sh 是执行 exec 最常用的方式

一句话,如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec;

当然,如果只是为了查看启动命令的输出,可以使用 docker logs 命令:

-f 的作用与 tail -f 类似,能够持续打印输出;

三、运行容器最佳实践

按用途容器大致可分为两类:服务类容器和工具类的容器;

服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等,通过 -d 以后台方式启动这类容器是非常合适的,如果要排查问题,可以通过 exec -it 进入容器;

工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行

工具类容器多使用基础镜像,例如 busybox、debian、ubuntu 等,以busybox为例:

指定容器的三种方法:短ID,长ID,容器名称,可通过 --name 为容器命名。重命名容器可执行docker rename;

通过 -d 参数在后台启动容器;

通过 exec -it 可进入容器并执行命令;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值