Docker之八:Docker 容器

本文详细介绍了Docker容器的管理,包括如何创建镜像、获取镜像、新建并启动容器、查看容器输出、停止与暂停容器、进入容器以及删除容器。还讲解了守护态运行、查看容器信息和统计信息等操作,帮助读者掌握Docker容器的基本管理技巧。


容器是镜像的一个运行实例。镜像是静态的只读文件,容器带有运行时的可写文件层,容器中的应用进程处于运行状态。虚拟机时一个模拟的完整操作系统,而Docker容器是带有必需运行环境的可运行的应用。

创建镜像

获取镜像

# 获取最新版本ubuntu镜像ubuntu:latest
$ sudo docker pull ubuntu

获取镜像

新建容器

# 新建容器
$ sudo docker create -it ubuntu:latest

创建容器
查看容器
docker create创建的容器处于停止状态,需要启动后才能真正运行。若在create之前没有pull获取镜像,执行create后会首先自动从仓库下载镜像。
docker create还有许多的指令选项,使用 docker create --help 可以查看其功能,主要包括与容器运行相关、与容器环境配置相关、与容器资源限制相关和容器安全保护相关。这些指令需要在实际中不断领会。

启动容器

# f242393c2e4b为通过docker pa -a查找到的ubuntu容器CONTAINER ID
$ sudo docker start f242393c2e4b

启动容器

获取镜像并新建启动容器

使用docker run命令可以一次性完成新建和启动容器,并且若本地没有镜像,会自动从仓库下载镜像。

# 输出Hello world后容器自动终止
$ sudo docker run ubuntu:latest /bin/echo 'Hello world'

输出Hello world
docker run创建容器流程:

  1. 检查本地是否存在镜像,不存在就从共有仓库下载。
  2. 利用镜像创建一个容器,并启动该容器。
  3. 分配一个文件系统给容器,并在只读镜像层外面挂载一层可读写层。
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
  5. 从网桥的地址池配置一个IP地址给容器。
  6. 执行用户指定的应用程序。
  7. 执行完毕后容器被自动终止。

启动用户可交互bash终端:

# 启动一个用户可交互的bash终端
$ sudo docker run -it ubuntu:latest /bin/bash
# 退出交互模式
root@d45fd3fd2cae:/# exit

启动交互式容器

docker run常见错误代码(命令执行出错后,默认返回命令的退出错误码):

错误码描述
125Docker daemon 支持出错,例如指定了不支持的Docker命令参数
126指令无法执行,例如权限出错等
127容器内命令无法找到

守护态运行

通过 -d 参数来让Docker容器在后台以守护态(Daemonized)形式运行。

# 后台守护态运行,每过1秒,打印一次hello world
$ sudo docker run -d ubuntu:latest /bin/sh -c "while true; do echo hello world; sleep 1; done"  

守护态运行

查看容器输出

使用 docker logs 可以查看容器输出。
docker logs指令参数
上一步我们启动了一个守护态容器,每过1秒,打印一次hello world,这里我们来查看容器输出:

$ sudo docker logs 8bddde26b1fc

查看容器输出

停止容器

暂停容器

# 启动一个容器 --name 指定容器别名,--rm 指定容器退出后自动删除
$ sudo docker run --name test --rm -it ubuntu:latest bash

启动容器
查看这个容器

# 暂停容器
$ sudo docker pause test

暂停容器

# 继续容器
$ sudo docker unpause 3cb9777fa384

重启容器

终止容器

# 终止容器
$ sudo docker stop test 
# 或
$ sudo docker stop 3cb9777fa384  

终止容器
终止容器后正在运行的容器会自动退出:
自动退出
处于终止状态的容器(终止后不被删除)可以使用 docker start 重启,或者正在运行的容器,可以使用 docker restart重启:

# 启动已经终止的容器
$ sudo docker start 3cb9777fa384
# 重启正在运行的容器
$ sudo docker restart 3cb9777fa384

进入容器

使用 -d 参数启动容器时,容器启动后会进入后台,用户无法查看容器中的信息,并且无法进行操作。使用 attachexec 命令可以在需要数进入容器。

  1. attach命令
    attach 指令参数
# 守护态启动容器
$ sudo docker run -itd ubuntu
# attach 进入容器
$ sudo docker attach 9ec685095022
# 退出容器CTRL-D或命令行输入exit
root@9ec685095022:/# exit

attach 进入容器
当多个窗口同时 attach 到同一个容器时,所有窗口会同步显示;某个窗口阻塞时,其它窗口无法执行操作。

  1. exec 命令
    exec可以在运行的容器内直接执行任意命令。
    exec 命令参数
# 守护态启动容器
$ sudo docker run -itd ubuntu
# exec 进入容器并启动一个 bash
$ $ sudo docker exec -it b2bbe291790c /bin/bash
# 退出容器CTRL-D或命令行输入exit
root@b2bbe291790c:/# exit

执行exec

删除容器

使用 docker rm 删除容器。默认情况下,docker rm命令只能删除已经处于终止或退出状态的容器,并不能删除处于运行状态的容器,除非使用 -f 参数。
docker rm 指令

# 删除一个正在运行的容器
# 终止容器
$ sudo docker stop b2bbe291790c
# 删除容器
$ sudo docker rm b2bbe291790c

删除一个正在运行的容器

导入和导出容器

导出容器

导出容器是指,导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态。使用 docker export 可以导出容器:
docker export命令格式和参数

$ sudo docker export -o ubuntu-bak.tar a6314aee8914
# 或
$ sudo docker export a6314aee8914 > ubuntu-bak.tar 

导出容器

导入容器

使用 docker import可以将导出的容器文件导入成镜像:
docker import命令格式

$ sudo cat ubuntu-bak.tar | sudo docker import - ubuntu:v1.0

导入容器为镜像

查看容器

查看容器信息

$ sudo docker inspect de64e3fe7fdb

查看容器信息

查看容器内进程

$ sudo docker top de64e3fe7fdb

查看容器内进程

查看统计信息

# 查看统计信息,默认会持续输出
$ sudo docker stats de64e3fe7fdb
# 查看统计信息,不持续输出
$ sudo docker stats --no-stream de64e3fe7fdb   

查看统计信息

其他容器命令

  1. 复制文件
    复制文件
# 将本地文件 data 复制到容器tmp目录下
$ sudo docker cp data de64e3fe7fdb:/tmp/

拷贝本地文件到容器
2. 查看变更
查看容器内文件系统是否变更。

$ sudo docker diff de64e3fe7fdb

查看变更
3. 查看端口映射
docker port

$ sudo docker port de64e3fe7fdb
  1. 更新配置
    docker update会更新容器的一些运行时配置,主要是一些资源配置份额。
    docker update
# 限制总配额为 1 秒
$ sudo docker update --cpu-quota 1000000 de64e3fe7fdb  
# 容器所占用时间为 10%
$ sudo docker update --cpu-period 1000000 de64e3fe7fdb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值