前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker命令

Docker命令

原创
作者头像
BNTang
发布2023-09-30 19:45:16
1630
发布2023-09-30 19:45:16
举报

镜像操作

Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像 镜像仓库地址:https://hub.docker.com/

获取镜像

命令如下:

代码语言:shell
复制
docker pull[选项][Docker Registry地址[:端口号]/仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到:

image-20210901130957159
image-20210901130957159

Docker 镜像仓库地址:地址的格式一般是<域名/IP>:端口号

如下就是获取镜像示例:

代码语言:shell
复制
docker pull ubuntu
image-20210901131316702
image-20210901131316702

查看镜像

代码语言:shell
复制
docker images
image-20210901131408131
image-20210901131408131
代码语言:shell
复制
docker image ls
image-20210901131501064
image-20210901131501064

docker image ls 是列出已经下载下来的镜像, 列表包含了仓库名、标签、镜像ID、创建时间以及所占用的空间。

代码语言:shell
复制
docker system df
image-20210901131734875
image-20210901131734875

docker system df 查看镜像、容器、数据卷所占用的空间。

代码语言:shell
复制
docker image ls -f dangling=true
image-20210901132143829
image-20210901132143829

docker image ls -f dangling=true 查看虚悬镜像,仓库名、标签均为 <none> 的镜像称为 虚悬镜像(dangling image) 此命令为显示虚悬镜像(也就是说仓库名称和标签全部是为空的)

创建一个虚悬镜像

代码语言:shell
复制
touch Dockerfile
image-20210901132501530
image-20210901132501530
代码语言:shell
复制
vim Dockerfile

编辑 Dockerfile 文件添加如下内容:

代码语言:text
复制
FROM ubuntu:latest
CMD echo "test"

添加完毕之后按 :wq 保存并退出即可。

代码语言:shell
复制
docker build .
image-20210901132811825
image-20210901132811825

然后虚悬镜像就已经创建好了,使用 docker image ls 查看一下镜像列表如下:

image-20210901132840688
image-20210901132840688

紧接着在用如上介绍的 docker image ls -f dangling=true 进行查看虚悬镜像列表如下:

image-20210901132958890
image-20210901132958890

删除所有的虚悬镜像

代码语言:shell
复制
docker image prune
image-20210901133112812
image-20210901133112812

运行镜像

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。

启动里面的 bash 并且进行交互式操作:

代码语言:shell
复制
docker run -it --rm ubuntu:latest bash
image-20210901140234574
image-20210901140234574

-it:这是两个参数,一个是 -i 交互式操作,一个是 -t 终端 --rm:这个参数是说容器退出后随之将其删除 ubuntu:latest:这是指用 ubuntu:latest 镜像为基础来启动容器 bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash

可以通过 exit 退出容器:

image-20210901140625160
image-20210901140625160

删除本地镜像

代码语言:shell
复制
docker image rm[选项]<镜像1>[<镜像2>...]

示例如下:

代码语言:shell
复制
docker image rm hello-world:latest
image-20210901142035388
image-20210901142035388
代码语言:shell
复制
docker image rmi -f hello-world:latest

rmi:代表删除本地镜像 -f:代表强制删除

image-20210901141348120
image-20210901141348120
代码语言:shell
复制
docker image rm $(docker image ls -q ubuntu)

如上命令的含义为删除所有仓库名为 ubuntu 的镜像,如果不跟名称,是删除所有镜像。

image-20210901142434952
image-20210901142434952
代码语言:shell
复制
docker image rm $(docker image ls -q -f before=ubuntu:latest)

如上命令的含义为删除指定版本之前的镜像。

image-20210901150312745
image-20210901150312745
image-20210901150500737
image-20210901150500737
image-20210901150613719
image-20210901150613719

容器操作

容器是独立运行的一个或—组应用,以及它们的运行态环境 虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用

启动容器

启动容器有两种方式:

  • 基于镜像新建一个容器并启动
  • 一个是将在终止状态(stopped)的容器重新启动

因为 Docker 的容器是轻量级的,用户可以随时删除和新创建容器。示例如下:

代码语言:shell
复制
docker run ubuntu /bin/echo 'hello world'
image-20210901162233374
image-20210901162233374

启动一个 bash 终端,允许用户进行交互。命令如下:

代码语言:shell
复制
docker run -t -i ubuntu /bin/bash
image-20210901162342399
image-20210901162342399

-t:让 Docker 分配一个伪终端并绑定到容器的标准输入上 -i:则让容器的标准输入保持打开。当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括

docker run 说明:

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

后台启动

很多时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。例如 docker run hello-world 会把日志打印在控制台:

image-20210901194741998
image-20210901194741998

docker run -d hello-world 只会打印 容器id。如下所示:

代码语言:shell
复制
docker run -d hello-world
image-20210901192125141
image-20210901192125141

如果需要查看一下启动信息可以使用 docker logs 容器ID 的方式进行查看如上图所示。

停止运行容器

终止一个运行中的容器

代码语言:shell
复制
docker container stop 容器id

查看容器ID的方式,使用 docker ps 或者 docker ps -a 这两者的区别可以参考 docker ps和docker ps -a 运行一个容器的方式前面已经介绍过了我们利用 hello-world 这个镜像运行一个容器如下。

image-20210902084759023
image-20210902084759023

运行了一个容器之后我们在开一个终端查看一下容器信息结果如下。

image-20210902084853636
image-20210902084853636

容器ID如下:

image-20210902084918774
image-20210902084918774

得到了该容器ID之后我们就可以来终止一个运行中的容器了如下:

代码语言:shell
复制
docker container stop 79d6fd21f4d9
image-20210902085032233
image-20210902085032233

如上我们终止了一个 ubuntu 的容器在第一个终端所展示的信息如下,执行了 exit 命令进行退出。

image-20210902085539014
image-20210902085539014

查看终止状态下的容器

代码语言:shell
复制
docker container ls -a
image-20210902085344620
image-20210902085344620

重启终止状态下的容器

代码语言:shell
复制
docker container start 容器id
image-20210902085657341
image-20210902085657341
代码语言:shell
复制
docker container start 79d6fd21f4d9

重启容器

代码语言:shell
复制
docker container restart 容器ID
代码语言:shell
复制
docker container restart 79d6fd21f4d9
image-20210902090300335
image-20210902090300335
image-20210902090318021
image-20210902090318021

进入到容器

在使用 -d 参数时,容器启动后会进入后台,某些时候需要进入容器进行操作,使用 docker exec 命令可以进入到运行中的容器当中。

代码语言:shell
复制
docker exec -it 容器ID /bin/bash

想要进行如上操作的验证首先需要启动一个容器,如下,使用 docker ps -a 查看所有容器列表,启动一个容器ID如下。

image-20210902100027183
image-20210902100027183

接下来我们就可以使用如下介绍的命令进入到该启动的容器当中了如下。

代码语言:shell
复制
docker exec -it c6d4236b6911 /bin/bash
image-20210902100144625
image-20210902100144625

导入导出容器

导出镜像

代码语言:shell
复制
docker export 容器ID > it6666.zip
代码语言:shell
复制
docker export 79d6fd21f4d9 > it6666.zip
image-20210902103552096
image-20210902103552096

导入镜像

代码语言:shell
复制
cat it6666.zip | docker import - it6666/ubuntu:1.0
image-20210902103658292
image-20210902103658292
代码语言:shell
复制
docker image ls
image-20210902103729493
image-20210902103729493

运行导入的镜像,除了之前介绍的从镜像运行到容器通过镜像的名称去运行的,其实还可以通过镜像的ID去运行一个容器如下所示:

代码语言:shell
复制
docker run -it 845c6a20ad11 /bin/bash
image-20210902103909120
image-20210902103909120

删除容器

删除一个处于终止状态的容器

代码语言:shell
复制
docker container rm [容器ID,容器名称]
image-20210902104445774
image-20210902104445774

如果要删除一个运行中的容器,可以添加 -f 参数。

代码语言:shell
复制
docker container rm -f c6d4236b6911
image-20210902104520607
image-20210902104520607

清理所有处于终止状态的容器

  • docker container ls -a:命令可以查看所有已经创建的包括终止状态的容器
  • docker container prune:清理所有处于终止状态的容器
image-20210902104723968
image-20210902104723968

从容器内拷贝文档到主机

就拿之前导入的 it6666/ubuntu 来进行测试,首先以 it6666/ubuntu 运行一个容器出来如下。

image-20210902105320780
image-20210902105320780

进入到 cd /usr/local/ 创建一个 touch test.txt

image-20210902105700540
image-20210902105700540

接下来就是开始我们的拷贝了拷贝方式如下。

代码语言:shell
复制
docker cp 容器id:容器内文件路径 主机路径
代码语言:shell
复制
docker cp b53506594fa5:/usr/local/test.txt /root
image-20210902110027791
image-20210902110027791

查看一下主机 /root 目录下是否有该文件如下。

image-20210902110244881
image-20210902110244881

容器生命周期

image-20210902115256903
image-20210902115256903
  • create:创建容器,并没有启动
  • kill:发出的是 sigkill 的信号,是无条件终止的信号
  • stop:发出的是 sigterm 的信号,程序终结信号,可以在退出的时候,被阻塞,可以做一些清理工作

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 镜像操作
    • 获取镜像
      • 查看镜像
        • 创建一个虚悬镜像
          • 删除所有的虚悬镜像
            • 运行镜像
              • 删除本地镜像
              • 容器操作
                • 启动容器
                  • 后台启动
                • 停止运行容器
                  • 终止一个运行中的容器
                  • 查看终止状态下的容器
                  • 重启终止状态下的容器
                  • 重启容器
                • 进入到容器
                  • 导入导出容器
                    • 导出镜像
                    • 导入镜像
                  • 删除容器
                    • 删除一个处于终止状态的容器
                    • 清理所有处于终止状态的容器
                  • 从容器内拷贝文档到主机
                  • 容器生命周期
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com