Docker容器

1 创建容器

1.1 新建容器

语法: docker [container] create
说明:新建的容器处于停止状态,可使用docker [container] start 命令启动
选项说明:选项主要包括:与容器运行模式相关、与容器环境配置相关、与容器资源限制和安全保护相关

示例:docker create -it centos:latest

1.2 启动容器

语法: docker [container] start
示例:docker start af02

1.3 新建并启动容器

语法: docker [container] run
说明:该命令等价于先执行docker [container] create 命令,再执行docker [container] start命令

示例:docker run centos:latest /bin/echo 'Hellow world'

利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
  • 利用镜像创建一个容器,并启动该容器;
  • 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
  • 从网桥的地址池配置一个IP地址给容器;
  • 执行用户指定的应用程序;
  • 执行完毕后容器被自动终止。
    常见选项:
    -t :让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上;
    -i: 让容器的标准输入保存打开;
    -name: 为容器指定一个名称;
    -d:让Docker容器在后台以守护态(Daemonized)形式运行;
    –rm:容器终止后会立刻删除,–rm和-d参数不能同时使用;
    –restart:重启容器,开机自启容器 — no, 容器退出时,不重启容器;on-failure,只有在非0状态退出时才从新启动容器;always,无论退出状态是如何,都重启容器;如果创建时未指定 --restart=always ,可通过update 命令docker update --restart=always xxx
    更多命令选项可通过man docker-run来查看

示例:docker run -it ubuntu:18.04 /bin/bash
说明:用户可通过Ctrl+d或者输入exit命令来退出容器,当用户退出bash进程后,容器也会自动退出
可使用docker container wait CONTAINER 子命令来等待容器退出,并打印退出返回结果
某些时候执行 docker run 时,因为命令无法正常执行容器会出错直接退出,此时可以查看退出的错误代码

默认情况下,常见的错误代码包括:
125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;
126:所指定命令无法执行,例如权限出错;
127:容器内命令无法找到
命令执行后出错,会默认返回命令的退出错误码。

1.4 守护态运行

让Docker容器在后台以守护态(Daemonized)形式运行,通过添加-d参数实现
示例:docker run -d ubuntu /bin/sh -c "while true;do echo hello world; sleep 1; done"
容器启动后,会返回一个唯一ID,可通过docker ps或者docker container ls命令来查看容器信息。

1.5 查看容器输出

语法: docker [container] logs
选项包括:
-details:打印详细信息
-f,-follow:持续保持输出
-since string:输出从某个时间开始的日志
-tail string:输出最近的若干日志
-t,-timestamps:输出时间戳信息
-until string:输出摸个时间之前的日志

2 停止容器

2.1 暂停容器

语法: docker [container] pause CONTAINER
示例:docker run --name test --rm -it ubuntu bash
docker pause test

使用docker [container] unpause CONTAINER命令恢复到运行状态。

2.2 终止容器

语法: docker [container] stop [-t|--time[=10]] CONTAINER
说明:该命令会首先向容器发送SIGTERM信号,等待一段超时时间后(默认10s),再发送SIGKILL信号来终止容器
示例:docker stop ce5
执行docker container prune命令,会自动清除掉所有处于停止状态的容器,还可以通过docker kill 直接发送SIGKILL信号来强行终止容器。处于终止的容器可通过docker start 来重启启动,docker restart 重启容器。

3 进入容器

3.1 attach命令

语法: docker [container] attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER
三个主要选项:
–detach-keys[=[]]:指定退出attach模式的快捷键序列,默认是CTRL-p CTRL-q
–no-stdin=true|false:是否关闭标准输入,默认是保持打开
–sig-proxy=true|false:是否代理收到的系统信号给应用程序,默认是true。

注意:使用attach命令有时不方便,当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作。

3.2 exec命令

语法: docker [container] exec [-d|detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]]] CONTAINER COMMAND [ARG...]
选项:
-d,–detach:在容器中后台执行命令
–detach-keys="":指定将容器切回后台的按键
-e,–env=[]:指定环境变量列表
-i,–interactive=true|false:打开标准输入,接收用户输入命令,默认值是false
–privileged=true|fale:是否给执行命令以高权限,默认false
-t,–tty=true|false:分配伪终端,默认为false
-u,–user="":执行命令的用户名或ID

示例:docker exec -it 234c /bin/bash

4 删除容器

语法: docker [container] rm [-f|force] [-l|--link] [-v|--volumes] CONTAINER
支持的选项包括:
-f,–force=false:是否强行终止并删除一个运行中的容器
-l,–link=false:删除容器的连接,但保留容器
-v,–volumes=false:删除容器挂载的数据卷

说明:默认情况下,docker rm 只能删除已停止的容器,不能删除处于运行中的容器,如果强行删除,添加-f参数

示例:docker rm 234c

5 导入和导出容器

5.1 导出容器

语法: docker [container] export [-o | --output[=""]] CONTAINER
说明:-o选项来指定到货粗的tar文件名,也可以直接通过重定向实现

示例:docker export -o centos.tar ce57
docker export e812 > centos.tar

5.2 导入容器

语法: docker [container] import [-c | --change[=[]]] [-m | --message [=MESSAGE]] file|URL|- [REPOSITORY[:TAG]]
说明:-c,–change=[]选项在导入的同时执行对容器进行修改的Dockerfile指令

示例:docker import centos.tar - test/centos:v0.1

docker load命令和docker import命令的区别:
容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保持完整记录,体积更大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

6 查看容器

6.1 查看容器详情

语法: docker container inspect [OPTIONS] CONTAINER

示例:docker container inspect test

6.2 查看容器内进程

语法: docker [container] top [OPTIONS] CONTAINER

示例:docker top test

6.3 查看统计信息

语法: docker [container] stats [OPTIONS] CONTAINER
支持的选项:
-a,-all:输出所有容器统计信息,默认仅在运行中
-format string:格式化输出信息
-no-stream:不持续输出,默认会自动更新持续实时结果
-no-trunc:不截断输出信息

示例:docker stats test

7 其他容器命令

7.1 复制文件

语法: docker [container] cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
支持的选项:
-a,-archive:打包模式,复制文件会带有原始的uid/gid信息
-L -follow-link:跟随软连接,当原路径为软连接时,默认只复制链接信息,使用该选项会复制链接的目标内容

示例:将本地的路径data复制到test容器的/tmp路径下:docker cp data test:/tmp/

7.2 查看变更

语法: docker [container] diff CONTAINER

示例:查看test容器内的数据修改:docker diff test

7.3 查看端口映射

语法: docker container port CONTAINER [PRIVATE_PORT[/PROTO]]

示例:查看test容器的端口映射情况:docker container port test

7.4 更新配置

语法: docker [container] update [OPTIONS] CONTAINER
支持的选项:
-blkio-weight uint16:更新块IO限制,10-1000,默认值为0,代表着无限制
-cpu-period int:限制CPU调度器CFS(Completely Fair Scheduler)使用时间,单位为微秒,最小1000
-cpu-quota int:限制CPU调度器CFS配额,单位为微秒,最小1000
-cpu-rt-period int:限制CPU调度器的实时周期,单位为微秒
-c,-cpu-shares int:限制CPU使用份额
-cpus decimal:限制CPU个数
-cpuset-cpus string:允许使用的CPU核,如0-3,0,1
-cpuset-mems string:允许使用的内存块,如0-3, 0,1
-kernel-momery bytes:限制使用的内核内存
-m,-memory bytes:限制使用的内存
-memory-reservation bytes:内存软限制
-memory-swap bytes:内存加上缓存区的限制,-1表示对缓存区无限制
-restart string:容器退出后的重启策略

示例:限制总配额为1s,容器test所占用时间为10%:docker update -cpu-quota 1000000 test
docker update -cpu-period 100000 test

可使用docke container help命令查看Docker支持的容器操作子命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值