Docker | Docker容器

本文详细介绍Docker容器的各种操作,包括启动一次性交互容器、交互式容器、守护式容器的方法,以及容器的基本管理命令,如查看、启动、停止、删除容器,容器日志查看,容器端口映射等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器的类型:

启动一次性交互容器(交互命令执行完,容器自动关闭):

  • 语法 :docker run IMAGE_NAME [COMMAND] [ARG…]
  • OPTIONS说明:
    --name="nginx-lb": 为容器指定一个名称,如果不指定,那么默认随机分配名称和ID;
  • 例如,启动一个容器输出hello world。由于刚装上Docker,没有任何镜像,所以会先下载一个最新的ubuntu18.04的docker镜像。一次操作容器在处理完操作后会立即关闭容器。
    docker run ubuntu echo 'hello world'
    在这里插入图片描述
    命令说明:创建一个新的容器并运行一个命令

启动交互式容器(可以持续进行命令交互,直到exit命令退出,容器关闭):

  • 语法 :docker run -t -i –name=自定义名称 IMAGE_NAME /bin/bash
  • OPTIONS说明:
    -i –interactive=true | false,默认是false;
    -t –tty=true | false,默认是false, 表示分配一个交互终端(pseudo-tty)一般这个模式就是可以启动bash,然后和容器有命令行的交互;
    –name 给启动的容器自定义名称,方便后续的容器选择操作;
  • 实例:
    docker run -i -t ubuntu /bin/bash
    在这里插入图片描述

可以看到我们终端的字头变成root@5faa5c5ef9fa:/#了,这就意味着我们的镜像已经创建了一个容器实例。

守护式容器 :
交互式容器在运行完命令退出后即停止,而实际中我们常常需要能够长时间运行,即使退出也能后台运行的容器,而守护式容器具备这一功能, 退出之后还可以再次进入该容器;

  • 守护式容器的创建方式有两种:
    • 通过交互式容器的退出方式的改变而转换成守护式容器;
    • 容器新创建的时候就指定该容器为守护式容器(但是如果没有持续执行的命令的话,该容器还是会关闭);

通过交互式容器的退出方式的改变而转换成守护式容器:

  • 我们执行完需要的操作退出容器时,不要使用exit退出,可以利用Ctrl+P Ctrl+Q代替,以守护式形式推出容器。
    在这里插入图片描述

容器新创建的时候就指定该容器为守护式容器(但是如果没有持续执行的命令的话,该容器还是会关闭):

  • 语法:docker run -d IMAGE_NAME [COMMAND] [ARG…]
  • OPTIONS说明:
    -d: 后台守护式运行容器,并返回容器ID;
    --name="nginx-lb": 为容器指定一个名称;
  • 实例:
    当命令在后台执行完毕,容器还是会关闭。这里防止容器立刻退出,写一个脚本循环输出“hello world”。
    docker run --name hiahia -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
    在这里插入图片描述

容器的基本操作:

查看容器列表:

  • 语法:docker ps [-a] [-l]

  • OPTIONS说明:

    • 省略 列出正在运行的容器
    • -a all 列出所有容器
    • -l latest 列出最近的容器
      在这里插入图片描述

查看指定容器详情:

  • 语法 :docker inspect name | id
    name指代具体的容器名称,id则是容器的唯一id标识。inspect命令可以详细的展示出容器的具体信息。
    在这里插入图片描述

启动停止的容器 :

  • 语法: docker start [-i] 容器名| ID
  • OPTIONS说明:
    -i 代表启动交互式容器
    在这里插入图片描述

停止容器(停止一个运行中的容器) :

  • 语法 : docker stop [OPTIONS] CONTAINER(name | id 都可以,下同) [CONTAINER...]

强制停止容器(停止一个运行中的容器) :

  • 语法 : docker kill [OPTIONS] CONTAINER [CONTAINER...]

重启容器(重启一个停止的容器) :

  • 语法 : docker restart [OPTIONS] CONTAINER [CONTAINER...]

删除一个或多少容器 :

  • 语法 : docker rm [OPTIONS] CONTAINER [CONTAINER...]

  • OPTIONS说明:
    -f :通过SIGKILL信号强制删除一个运行中的容器,默认rm是删除不了运行中的容器的;

实例:
强制删除容器db01、db02

docker rm -f db01 db02

附加到运行中的容器(后台启动一个容器后,再次进入到这个容器中):

  • 语法 : docker attach name | id

查看容器日志 :
当守护式容器在后台运行时,我们可以利用docker的日志命令查看其输出。

  • 语法 :docker logs [-f] [-t] [–tail] container

  • OPTIONS说明:
    -f --follows=true | false,默认是false,显示更新
    -t --timestamps=true | false,默认是false,显示时间戳
    --tail=“all” | 行数,显示最新行数的日志

  • 实例:
    在这里插入图片描述

查看容器内进程 (对运行中的容器查看其中运行的进程):

  • 语法 :docker top container(name | ID)
  • 实例:
    在这里插入图片描述

在运行的容器中执行命令/开启一个新进程:

  • 语法 :docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • OPTIONS说明:
    -i :即使没有附加也保持STDIN (stdin是标准输入,一般指键盘输入到缓冲区里的东西)打开;
    -t :分配一个伪终端,和-i 配合使用;
  • 实例:
    在这里插入图片描述

容器的端口映射(通过镜像创建容器的时候指定端口映射):

  • 语法 :docker run [-P] | [-p] [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS说明:
    -P,–publish-all=true | false,大写的P表示为容器暴露的所有端口进行映射;
    -p,–publish=[],小写的p表示为容器指定的端口进行映射,有四种形式:
  • containerPort:只指定容器的端口,宿主机端口随机映射;
  • hostPort:containerPort:同时指定容器与宿主机端口一一映射;
  • ip::containerPort:指定ip和容器的端口;
  • ip:hostPort:containerPort:指定ip、宿主机端口以及容器端口。
  • --name="nginx-lb": 为容器指定一个名称;

例如(OPTIONS 可以通用的,这里还可以指定具体容器的名称 可以用 = 也可以不用 如:–name container001):

docker run -p 80 -i -t ubuntu /bin/bash
docker run -p 8080:80 -i -t ubuntu /bin/bash
docker run -p 0.0.0.0::80 -i -t ubuntu /bin/bash
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash

容器中软件的下载,安装,更新等:
通过apt-get 命令,apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
容器中软件安装的步骤:

  • 更新源(更新清单软件的列表)
    本地的包索引文件源和服务器端的进行同步更新( /etc/apt/sources.list)

    apt-get update

  • 安装指定软件,如 Nginx

    apt-get install -y nginx
    

PS:

  • -y 在apt-get 进行软件安装的时候,会询问Y/n -y的作用就是自动统一设置为y在有询问的时候,不再要求确认。

总结:

  • ctrl+d 退出容器且关闭, docker ps 查看无;
  • ctrl+p+q 退出容器但不关闭, docker ps 查看有;
  • 每次动作前需要先apt-get update 目的:讲本地的包索引文件源和服务器端的进行同步更新(
    /etc/apt/sources.list) 而更新或者升级软件的软件包的索引都是通过/etc/apt/sources.list获取的。
  • docker ps 看到的ID字段显示的是缩写容器的 ID;
  • 容器一旦被直接退出,之前安装的gcc啊vim啊啥的就会全部gg掉。如果要保存修改,就需要将当前容器封装成一个新的镜像出来,这样下次启动这个新的镜像后之前作出的修改还都在,之前的基础镜像就不再是我们需要的啦;
  • Docker 会为所有已经运行(包括已经停止)的容器随机分配一个唯一的名字和一个唯一的 ID(一一对应),docker 命令可以识别 ID,也可以识别这个名字;
  • 容器对镜像的所以操作都是在镜像虚拟出来的(该容器独有的)改动层上进行的,原来只读层的内容不会改变,改动层的内容是由只读层复制过去的;
  • 容器的提取:讲容器打包成镜像(容器就类似与运行中/停止的镜像,只不过区别在于改动层的不同),但是镜像一旦生成,其包含的数据就是静态数据,不允许修改,只能通过容器的动态数据来操作(再重新生成一个镜像);
  • 用完的容器/历史容器的占用空间的清理,运行过的所有容器和所有的历史容器都会被保存在硬盘上,除非你手动 docker rm 它们,手动删除的容器不能恢复;
  • 上传自定义镜像的时候,会讲基础镜像的改动层一并上传上去,保证了本地和远程镜像的一致性,也说明了,自定义镜像是在原始基础镜像的基础上进行的集成;
  • 已经存在的容器里做的操作还会保留,-docker run实际上是通过这个镜像再次创建了一个容器,内容肯定不存在了,就不能算是再次运行了,而是重新新建;
  • Docker的理念是一个容器运行一个服务(一个项目);

引用:
删除容器的详细命令
Docker命令大全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值