docker入门

查看 Docker 信息

查看 Docker 程序是否存在,功能是否正常,可使用sudo docker info命令。

该命令会返回所有容器和镜像数量以及情况,Docker 使用的执行驱动和存储驱动,以及 Docker 的基本配置。

第一个 Docker 程序

docker run命令提供 Docker 容器的创建到启动功能,使用该命令创建 ubuntu 容器:

sudo docker run -i -t ubuntu /bin/bash

通过该命令可以直接拉取最新的 ubuntu 镜像,并启动该容器。其中-i保证容器中 STDIN 是开启的,-t则为要创建的容器分配一个伪 tty 终端。这样新创建的容器才能提供交互式 shell。

执行该命令后,首先 Docker 会检查本地是否存在 ubuntu 镜像,如果没有就在 Docker 官方维护仓库(Docker Hub Registry)中查看是否有该镜像。一旦找到该镜像则下载保存到宿主机中。然后使用该镜像创建一个新容器,该容器拥有自己的网络、IP地址以及和宿主机通信的桥接网络接口。最后在容器中运行/bin/bash命令启动 Bash shell。

上述命令如果执行成功后,就进入到了 ubuntu 容器中,此时可以做任何在 ubuntu 系统中可做的事情。通过hostname获取主机名; 通过cat /etc/hosts可以查看 hosts 文件; 通过ps -aux检查容器进程; 并且可以通过apt-get install安装软件。

当执行exit命令后,容器停止运行,并返回宿主机命令行中。因为只有在指定的/bin/bash命令处于运行状态时,容器才会相应的处于运行状态; 一旦退出/bin/bash,容器也停止运行。此时可通过docker ps -a 查看系统中容器列表,包括已停止,如果没有-a标志则查看运行中容器。

ps: docker ps命令中指定-l标志表示列出最后一个运行的容器,无论正在运行还是已停止。

容器命名

Docker 会为创建的每个容器自动生成一个随机的名字,如果想指定名称,可以用--name标志实现。合法容器名包含字符: a-zA-Z0-9_.-

sudo docker run --name bob_container -i -t ubuntu /bin/bash

容器命名必须是唯一的,如果创建重名容器,该命令将会失败。

启动停止容器

# 通过容器名启动
sudo docker start bob_container
# 通过容器ID启动
sudo docker start <container_id>
# 停止容器
sudo docker stop bob_container
# 重启容器
sudo docker restart bob_container

附着容器

重新启动容器时,需要使用docker attach命令附着到原本容器会话中。

# 通过容器名
sudo docker attach bob_container
# 通过容器ID
sudo docker attach <container_id>

创建守护式进程

使用-d参数将容器放到后台运行。

sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

获取容器日志

通过 docker logs命令获取容器日志。

# 打印最后几条日志
sudo docker logs <contain_names>
# 实时监控日志
sudo docker logs -f <contain_names>
# 加入时间戳
sudo docker logs -ft <contain_names>
# 跟踪容器日志某一片段
## 获取日志最后10行内容
sudo docker logs --tail 10 <contain_names>
## 跟踪容器最新日志
sudo docker logs --tail 0 -f <contain_names>

通过--log-driver设置Docker守护进程和容器所用的日志驱动,默认为json-file。其他可用选项还有syslog,该选项禁用docker logs命令,并将所有日志输出重定向到 Syslog,在centos宿主机中可在/var/log/messages中查看。容器级别启动 Syslog 命令如下:

sudo docker run --log-driver="syslog" --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

--log-driver还有一个可用选项为none,该选项禁用所有容器中日志,导致docker logs命令也会被禁用。

查看容器内进程

通过docker top命令可查看容器中运行的进程。

sudo docker top daemon_dave 

Docker 统计信息

docker 1.5.0中引入docker stats命令,该命令可查看一个或多个容器的统计信息,包括CPU、内存、网络I/O及存储I/O的性能和指标。

sudo docker stats daemon_dave

容器内运行进程

docker exec命令可以在容器内额外启动新进程,可以在容器内运行的进程有两种类型:后台任务和交互式任务。后台任务在容器内运行且没有交互需求,而交互式任务则保持在前台运行。

在容器中运行后台任务命令如下,-d标志表明运行一个后台程序,后面指定所在容器以及命令。该命令为创建一个/etc/new_config_file空文件。

sudo docker exec -d daemon_dave touch /etc/new_config_file

在容器内运行交互式命令如下,-t-i标志为执行进程创建 TTY 终端并捕捉 STDIN。

sudo docker exec -t -i daemon_dave /bin/bash

自动重启容器

由于某种错误导致容器停止运行,可以通过--restart标志自动重启容器。--restart会检查容器的退出代码,并据此来决定是否要重启容器,如果无该标志默认不重启。可以将该标志设置为always标志无论退出代码是什么,都会重启该容器;也可以设置为on-failure只有当退出代码为非零时,才会自动重启,on-failure还可以设置可选重启次数,例如重启5次失败后放弃重启--restart=on-failure:5

sudo docker run --restart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

获取容器信息

除了通过docker ps获取容器信息,还可以使用docker inspect获取更多容器信息。docker inspect命令会对容器进行详细检查,并返回其配置信息,包括名称、命令、网络以及其他有用数据。可以用-f--format标志来选定查看结果。命令如下

sudo docker inspect daemon_dave
# 返回容器运行状态
sudo docker inspect --format='{{ .State.Running }}' daemon_dave

删除容器

# 删除容器
sudo docker rm <container_id>
# 删除所有容器
sudo docker rm `sudo docker ps -a -q`

其中-q标志代表只需要返回容器ID不需要返回容器其他信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值