docker学习之路操作Docker容器

Posted xysr-tom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker学习之路操作Docker容器相关的知识,希望对你有一定的参考价值。

1.1.创建容器

主要介绍容器的create、start、run、wait和logs子命令

1.1.1新建容器

创建容器
docker create -it ubuntu:latest
查看容器
docker ps -a

  create参数说名:

          -i:标准输入

          -t:分配一个伪终端

1.2.1.启动容器

假设一个容器的ID为af8f4f922daf,启动该容器

docker start af

  或者把id写全

1.3.1新建并启动容器

docker run ubuntu /bin/echo ‘hello world‘

  hello world

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

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

对于容器来说,当应用退出后,容器的使命也就完成,也就没有继续运行的必要了。

可以使用docker container wait CONTAINER [CONTAINER...]子命令来等待容器退出,并打赢退出返回的结果。

某些时候,执行docker run时候因为命令无法正常执行容器会出错直接退出,此时可以查看退出的错误代码。

默认情况下,常见错误代码包括

  • 125:docker daemon 执行出错,例如指定不了不支持的docker命令参数
  • 126:所指定命令无法执行,例如全选出错
  • 127:容器命令无法找到

1.4.1.守护状态运行

 更多的时候,需要让容器在后台以守护状态(Daemonized)形式运行。此时,可以通过添加-d参数来实现

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

1.5.1.查看容器输出

docker logs命令

支持选项包括:

-details:打印详细信息

-f , -follow:持续保持输出

-since string:输出从某个时间开始的日志

-tail string:输出最近的若干日志

-t , -timestamps:显示时间戳信息

-until string:输出某个时间之前的日志

docker logs ce554267d7a4

2.1.停止容器

介绍容器的pause/unpause、stop和prune子命令

2.1.1.暂停容器

docker pause

栗子:启动一个容器并暂停

docker run --name test --rm -it ubuntu bash
docker pause test
docker ps
####--rm:容器退出后是否自动删除

2.1.2恢复暂停容器

docker unpause test

2.2.1.终止容器

docker stop

docker stop ce5
###停止ce5 简写ID的容器

此时执行docker container prune命令,会自动清楚所有处于停止状态的容器。

此外,还可以通过docker kill ID直接发送sigkill信号来强制终止容器

####查看所有容器ID
docker ps -qa
####处于终止的容器,用start来启动它
docker start ce554267d7a4
####或者restart先停后启
docker restart ce554267d7a4

3.1.进入容器

3.1.1.attach命令

attach是docker自带的命令,格式为:

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:是否代理收到的系统信号给应用进程

然而使用attach有时很不方便,当多个窗口同时attach到同一个容器,所有窗口都会同步显示,当某个窗口阻塞式,其他窗口也无法执行操作

3.2.1.exec命令

基本格式:

docker [container] exec [-d|--detach] [--detach-keys[= [ ] ] ] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER] ] CONTAINER CPMMAND [ARG...]

比较重要的参数有:

-d , --detach:在容器中后台执行命令

--detach-keys=" ":指定将容器切回后台的按键

-e , --env=[ ]:指定环境变量列表

-i , --interactive=true|false:打开标准输入接受用户输入的命令

--privileged=true|false:是否给执行最高权限

-t , --tty=true|false:分配伪终端

-u , --user=" ":执行命令的用户名或ID

docker exec -it 243c32535da7 /bin/bash

  这种方式在不影响容器内其他应用的情况下,用户可以与容器进行交互。

4.1.删除容器

docker rm来删除容器

主要参数:

-f , --force=false:强制终止并删除一个运行中的容器

-l , --link=false:删除容器的连接,保留容器

-v , --volumes=false:删除容器挂载的数据卷

docker rm ce554264d7a4

5.1.导入导出容器

有时候我们需要对容器从一个系统迁移到另一个系统,这时候可以使用容器的导入导出功能

5.1.1.导出容器

####导出id为ce5缩写的容器到test_for_run.tar文件
docker export -o test_for_run.tar ce5

5.2.1.导入入容器

docker -import [-c|--change[= [ ] ] ] [-m|--message[=MESSAGE] ] file|URL - [REPOSITORY[:TAG] ]

用户可以通过-c , --change= [ ] 选项在导入的时候同时执行对容器修改的Dockerfile指令

docker import test_for_run.tar - test/ubuntu:v1.0

  在之前使用过docker load导入镜像,这跟docker import十分类似。实际上,既可以使用load来导入镜像存储文件到本地镜像库,也可以import导入容器快照到本地镜像库。区别在于:容器快照文件将丢失所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件则保存完整记录,体积更大。此外,从容器快照导入时可以重新指定标签等元数据信息。

6.1.查看容器

这里主要介绍inspect、top、stats子命令

6.1.1.查看容器详情

docker inspect CONTAINER

查到的具体信息会以json的格式返回包括容器ID,创建时间,路径,状态,镜像,配置等各项信息

6.2.1.查看容器内进程

docker top CONTAINER

这个类似于inux的top命令

6.3.1.查看统计信息

docker stats CONTAINER

会显示cpu,内存,存储,网络等使用情况的统计信息

支持选项包括:

-a , -all:输出所有容器统计信息,默认仅在运行中

-format string:格式化输出信息

-no-stream:不持续输出,默认会自动持续更新实时结果

-no-trunc:不截断输出信息

7.1.其他容器命令

这里主要介绍cp、diff、port和update子命令

7.1.1.复制文件

####将date目录复制到test容器的tmp目录下
docker [container] cp data test:/tmp/

  主要参数:

            -a , -archive:打包模式,复制文件会带有原始的uid/gid信息

            -L , -follow-link:跟随软连接。当路径为软连接时,使用该选项恢复至链接的目标内容

7.2.1.查看变更

####查看test容器内的数据修改
docker container diff test

7.3.1.查看端口映射

docker container port test
9000/tcp -> 0.0.0.0:9000

7.4.1.更新配置

container update命令可以更新容器的一些运行时配置,主要是一些资源限制份额

格式:

docker [container] update [OPTIONS] CONTAINER [CONTAINER...]

支持选项包括(主要参数):

-c , -cpu-shares int:限制cpu个数

-m , -memory bytes:限制使用的内存

-restart string:容器退出后重启策略

#####限制总配额为1秒,test所占用时间为10%
docker update --cpu-quota 1000000 test
docker update --cpu-period 100000 test

 

以上是关于docker学习之路操作Docker容器的主要内容,如果未能解决你的问题,请参考以下文章

3. Docker学习之路 —— Docker常用命令

linux运维架构之路-Docker快速入门

Docker容器学习--1

Docker学习docker容器操作

Docker学习之路

云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障