docker容器使用

简单来说,容器是镜像的一个运行实例。所不同的是镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态。

如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其他系统环境)和跑在上面的应用,那么Docker容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境。

查看容器

命令:

docker ps [option]

查看所有正在运行的容器

docker ps

查看所有容器

docker ps -a

查看所有的容器,包含 正在运行的和没有运行的

示例:
在这里插入图片描述

创建容器

命令:

docker [container] create IMAGE_NAME

作用:创建一个容器,但处于停止状态,需要 docker start 命令来启动它。
示例:

docker container create mysql

在这里插入图片描述

docker create 命令在创建容器的时候,会去检查本地是否存在指定的镜像,不存在就从公有仓库下载

启动容器

命令:

docker [container] start 容器ID

新建并启动容器

命令:

docker [container] run REPOSITORY[:TAG] 

作用:
直接创建并启动容器。等价于先执行 docker [container] create 创建一个容器,然后再执行docker [container] start 来启动它。当利用docker run来创建并启动容器时,Docker在后台运行的标准操作包括:

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

常用选项:

  • -d:指定容器在后台运行;
  • -t:分配tty设备用来支持终端登录
  • -i:打开标准输入用于控制台交互
  • -p:设置容器暴露的端口
  • -v:设置容器挂载的存储卷,也就是挂载到容器的某个目录。
  • --name=' ':设置容器的名称,可通过名字进行容器管理

-it 常一起使用 用比较简单容易理解的话说是-i开启了input(输入)功能 ,-t开启了一个连接容器里边的terminal(终端)。

示例:
(1)运行一个在后台执行的容器,同时,还能用控制台管理

docker run -i -t -d ubuntu:latest

(2)运行一个带命令在后台不断执行的容器,不直接展示容器内部信息

docker run -d ubuntu:latest ping www.docker.com

(3)运行一个在后台不断执行的容器,同时带有命令,程序被终止后还能重启继续跑,还能用控制台管理

docker run -d --restart=always ubuntu:latest ping www.docker.com

(4)为容器指定一个名字

docker run -d --name=ubuntu_server ubuntu:latest

(5)容器暴露80端口,并指定宿主机80端口与其通信(: 之前是宿主机端口,之后是容器需暴露的端口)

docker run -d --name=ubuntu_server -p 80:80 ubuntu:latest

(6)指定容器内目录与宿主机目录共享(: 之前是宿主机文件夹,之后是容器需共享的文件夹)

docker run -d --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest

执行错误:
有些时候,命令docker run 执行后出错,会默认返回错误码,默认情况下,常见错误代码包括:

  • 125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;
  • 126:所指定命令无法执行,例如权限出错
  • 127:容器内命令无法找到。

查看容器输出

命令:

docker logs 容器ID

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach:如果从这个容器退出,会导致容器的停止。

  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

docker attach

docker attach 容器ID

在这里插入图片描述
注意: 如果从这个容器退出,会导致容器的停止。
在这里插入图片描述

docker exec

在这里插入图片描述
在这里插入图片描述
如果从这个容器退出,不会导致容器的停止,这就是为什么推荐大家使用 docker exec 的原因。

暂停容器

命令:

docker [container] pause container[...]

作用:
暂停一个正在运行的容器。

处于paused状态的容器,可以使用docker [container] unpause container[...] 命令来恢复到运行状态。

停止容器

docker stop

docker stop 常常被翻译为优雅的停止容器

docker stop 容器ID或容器名
  • -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
docker stop -t=60 容器ID或容器名

docker kill

默认情况下,docker kill命令不会给容器中的应用程序有任何gracefully shutdown的机会。它会直接发出SIGKILL的系统信号,以强行终止容器中程序的运行。

docker kill 容器ID或容器名 

stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器。可以简单理解为docker kill粗暴的终止docker容器中运行的程序,但是想要优雅的终止掉的话,我们需要使用docker stop命令,并且在程序中多花一些功夫来处理系统信号,这样能保证程序不被粗暴的终止掉,从而实现gracefully shutdown。

使用 docker start 启动一个已停止的容器

重启容器

docker restart 命令先会停止该容器,然后重新启动该容器。

导出和导入容器

导出容器

docker export 容器ID  > 导出路径

在这里插入图片描述
导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 /common/ubuntu.tar 导入到镜像 test/ubuntu:v1:

$ cat /common/ubuntu-test.tar | docker import - test/ubuntu:v1

在这里插入图片描述
此外,也可以通过指定 URL 或者某个目录来导入,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器
删除容器使用 docker rm 命令:

$ docker rm -f 容器ID

-f 表示强制删除
在这里插入图片描述

posted @ 2022-10-30 23:22  寒小韩  阅读(130)  评论(0编辑  收藏  举报