Docker最常用的镜像命令和容器命令

一、镜像相关命令

官方文档:https://docs.docker.com/referenc

1.1查看镜像

[root@localhost ~]# docker images
REPOSITORY    TAG                IMAGE ID       CREATED         SIZE
hello-world   latest             feb5d9fea6a5   6 months ago    13.3kB
mysql         5.7                8cf625070931   8 months ago    448MB
rabbitmq      3.8.3-management   867da7fcdf92   22 months ago   181MB
  • REPOSITORY:镜像在仓库中的名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

这些镜像都是存储在 Docker 宿主机的 var/lib/docker 目录下的。

1.2搜索镜像

当您需要从网络中查找所需图像时,可以使用以下命令进行搜索。

[En]

When you need to find the desired image from the network, you can search with the following command.

docker search 镜像名称

Docker最常用的镜像命令和容器命令
  • NAME:镜像名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价(受欢迎的程度)
  • OFFICIAL:是否为官方构建
  • AUTOMATED:自动构建,表示该镜像是由 Docker Hub 自动构建流程创建的

1.3拉取镜像

拉取镜像就是从中央仓库管理器将镜像下载到本地位置。

[En]

To pull the image is to download the image to the local location from the central warehouse manager.

docker pull 镜像名称

例如拉取 CentOS 镜像到本地,如果不声明 Tag 镜像标签信息则默认拉取 Latest 版本,也可以通过:https://hub.docker.com 搜索该镜像,查看支持的 Tag 信息。

Docker最常用的镜像命令和容器命令

通过 Tag 信息,下载centos7 的镜像。

docker pull centos:7

1.4删除镜像

按镜像 ID 删除镜像

删除单个镜像
docker rmi 镜像ID

删除多个镜像
docker rmi 镜像ID 镜像ID 镜像ID

docker images -q 可以查询到所有镜像的 ID,通过组合命令可以实现删除所有镜像的操作。

docker rmi docker images -q

注意:如果通过了某个镜像创建了容器,则该镜像无法删除。
解决方案:先删除镜像中的容器,然后再删除镜像。

[En]

Solution: delete the container in the image first, and then delete the image.

二、容器相关命令

2.1查看容器

查看正在运行的容器

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
fdda4b253da0   centos:7   "/bin/bash"   3 seconds ago   Up 2 seconds             centos
  • CONTAINER ID:容器ID
  • IMAGE:所属容器
  • CREATED:创建时间
  • STATUS:容器状态
  • PORTS:端口
  • NAMES:容器名称

查看停止的容器

docker ps -f startus=exited

查看所有容器(包括运行和停止)

[En]

View all containers (including running and stopping)

docker ps -a

查看最后一次运行的容器

docker ps -l

列出最近创建的 n 个容器

docker ps -n 3

2.2创建与启动容器

docker run [OPTIONS] image [COMMAND] [ARG...]
  • -i:表示运行容器;
  • -t:表示容器启动后会进入其命令行,也就是创建容器后就能登录进去;
  • --name:为创建的容器命名;
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机的目录)可以用多个 -v做多个目录映射;
  • -d:创建一个守护式容器在后台运行,不会自动登录容器;
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可以使用多个 -p做多端口映射;
  • -P:随机使用宿主机的可用端口与容器内暴露的端口映射;

2.2.1创建并进入容器

通过一个镜像名称创建一个容器,并进入容器的 /bin/bash

docker run -it --name 容器名称 镜像名称:标签 /bin/bash

注意:Docker 容器运行必须有一个前台进程,如果没有前台进程执行,容器认为是空闲状态,就会自动退出。

退出当前容器

exit

2.2.2守护式方式创建容器

docker run -id --name 容器名称 镜像名称:标签

登录守护式容器
docker exec -it 容器名称|容器ID /bin/bash

2.3停止与启动容器

停止容器
docker stop 容器名称|容器ID

启动容器
docker start 容器名称|容器ID

2.4文件拷贝

将文件拷贝到容器内可以使用 cp 命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录

2.5目录挂载

​ 目录挂载是属于容器数据卷操作,我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样的话可以通过修改宿主机某个目录的文件而去影响容器,而且这个操作是双向绑定的,也就是说容器内的操作也会影响到宿主机,实现备份功能。

​ 但是容器被删除的时候,宿主机的内容并不会被删除,如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响。

创建容器添加 -v 参数,格式为 宿主机目录:容器目录, 例如:

docker run -id -v /mydata/docker_centos/data:/user/local/data --name centos01 centos:7

多个目录挂载
docker run -id -v 宿主机目录1:容器目录1 -v 宿主机目录2:容器目录2 --name 容器名 镜像名

在挂载时可能会出现权限不足的提示。这是因为 CentOS7 中的安全模块 SELinux 把权限禁掉了,在 docker run 时通过 -privileged=true 给该容器加权限来解决挂载的目录没有权限的问题

2.5.1匿名挂载

匿名挂载只需要写容器目录即可,容器外对应的目录会在 /var/lib/docker/volumes 中生成。

匿名挂载
docker run -id -v /user/local/data --name centos02 centos:7

查看 volume 数据卷信息
docker volume ls

Docker最常用的镜像命令和容器命令

2.5.2具名挂载

具名挂载就是给数据卷取个名字,容器外对应的目录就会在 /var/lib/docker/volume 中生成。

具名挂载
docker run -id -v docker_centos_data:/usr/local/data --name centos03 centos:7

查看 volume 数据卷信息
docker volume ls

Docker最常用的镜像命令和容器命令

2.5.3指定目录挂载

最开始的挂载就是指定目录挂载,这种方式的挂载不会在 /var/lib/docker/volume 目录生成内容。

docker run -id -v /mydata/docker_centos/data:/user/local/data --name centos01 centos:7

多个目录挂载
docker run -id -v 宿主机目录1:容器目录1 -v 宿主机目录2:容器目录2 --name 容器名 镜像名

2.5.4查看目录挂载关系

通过 docker volue inspect 数据卷名称 可以查看该数据卷对应宿主机目录地址。

[root@localhost ~]# docker volume inspect centos_data
[
    {
        "CreatedAt": "2022-03-30T20:40:07-07:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/centos_data/_data",
        "Name": "centos_data",
        "Options": null,
        "Scope": "local"
    }
]

通过 docker inspect 容器ID或名称,在返回的 JSON 节点中找到 Mounts, 可以查看详细数据挂载信息。

Docker最常用的镜像命令和容器命令

2.5.5只读只写

只读:容器数据管理只能通过修改主机内容来实现。

[En]

Read-only: container data management can only be achieved by modifying the host content.

docker run -it -v 宿主机目录:容器目录:ro --name 容器名 镜像名:标签

只写:默认情况下,主机和容器可以双向操作数据

[En]

Write only: by default, hosts and containers can manipulate data in both directions

docker run -it -v 宿主机目录:容器目录:rw --name 容器名 镜像名:标签

2.5.6继承(volumes-from)

也就是说,从容器的挂载目录继承一个或多个其他容器。

[En]

That is, one or more other containers are inherited from the mount directory of a container.

容器 centos7-01 指定目录挂载
docker run -id -v /mydata/data:/use/local/data --name centos7-01 centos:7

容器 centos7-02 和 centos7-03 相当于继承 centos7-01 容器的挂载目录、
docker run -id --volumes-from centos7-01:ro --name centos7-04 centos:7  # 只读
docker run -id --volumes-from centos7-01:rw --name centos7-05 centos:7  # 双向(默认)

2.6查看容器IP地址

通过元信息查看

docker inspect 容器名称|容器ID

直接输入IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名|容器ID

2.6删除容器

删除指定容器
docker rm 容器名称|容器ID

删除多个容器
docker rm 容器名称1|容器ID1 容器名称2|容器ID2

Original: https://www.cnblogs.com/XiaoYang-sir/p/16081193.html
Author: Mr-Yang`
Title: Docker最常用的镜像命令和容器命令

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523916/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 十一、服务介绍及端口

    服务管理简介服务器的作用主要是什么?主要是通过网络来提供服务,比如apache提供一个web服务,mysql提供一个数据库服务,dns提供一个域名解析服务,ftp提供一个文件服务器…

    Linux 2023年6月7日
    098
  • 上班摸鱼与网络安全

    上班不摸鱼,那这班上的没有灵魂啊。但是不久前爆出的国美网络监控事件,也提示我们网络有风险,摸鱼需谨慎。 https://baijiahao.baidu.com/s?id=17167…

    Linux 2023年6月13日
    093
  • 通过route , tracert , traceroute 查看本地路由配置及访问ip或域名时经过的路由信息

    转载请注明出处: 1.路由器和交换机的区别和过程 在windows 系统或linux 系统访问 外网ip 或域名时,都会通过层层的路由器,然后将请求转发到最终的目标服务器;因为互联…

    Linux 2023年6月14日
    097
  • C语言基本语法

    C语言以分号代表一条语句结束,一条命令可以在多行显示 对于空格没有多大要求,只是为了代码美观,方便看懂,但python语法就比较严格必须要加空格 注释VS快捷键Ctrl+K,然后C…

    Linux 2023年6月8日
    084
  • Linux查看服务器内存、磁盘、cpu、网络占用、端口占用情况

    1、查看物理CPU个数:cat cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l2、…

    Linux 2023年6月13日
    0122
  • MySQL多实例安装部署

    MySQL多实例安装部署 1、MySQL多实例概念 多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个MYSQL服务进程,这些服务进程…

    Linux 2023年6月7日
    0109
  • Java对象序列化和反序列化

    Java类的序列化和反序列化 序列化:指将对象转换为字节序列的过程,也就是将对象的信息转换成文件保存。 反序列化:将字节序列转换成目标对象的过程,也就是读取文件,并转换为对象。 几…

    Linux 2023年6月14日
    095
  • SQL实战——03. 查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no

    查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE dept_manage…

    Linux 2023年6月14日
    090
  • Linux 配置Maven(避免踩坑篇)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 二、下载好的maven安装包放在磁盘的 /usr/local/ 目录下,如下图: 三、解压该压缩文件 tar -z…

    Linux 2023年6月14日
    091
  • 以STM32和FPGA为核心的多组件协调工作系统

    posted @2019-06-09 22:04 xutopia 阅读(709 ) 评论() 编辑 Original: https://www.cnblogs.com/xutopi…

    Linux 2023年6月14日
    0114
  • 防火墙NAT配置与DHCP下发

    该实验如果有做的不足的地方请见谅 实验目标: 按要求划分区域,公司内部办公区为trust,服务器区为dmz,外部网络为untrust。 PC1和PC2为公司内部办公区,需要从防火墙…

    Linux 2023年6月7日
    096
  • Redis 通过key前缀获取所有key的值

    Redis 通过key前缀获取所有key的值 public void getRedis(String cardId) { // 获取所有的key Set keys = redisT…

    Linux 2023年5月28日
    059
  • MIT6.828——Lab1 partA(麻省理工操作系统课程实验)

    Lab1 基本部分 在实验给出的文档中,已经详说明了早期PC的内存布局,并且运行了 bootloader。详细地解释了,上电后BIOS所做的工作,因此这部分不再赘述。需要注意的是 …

    Linux 2023年5月27日
    0156
  • python学习

    python中的字符串以双引号或者单引号表示 长度为L:第一个字节索引为0或-L 最后一个字节索引为L-1或-1 in是二元关系操作,用来判断左侧内容是否在右侧的集合中 float…

    Linux 2023年6月6日
    092
  • 小文件、nginx、Redis、Moosefs

    现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右。 现在需要将这些数据做缓存以在高并非…

    Linux 2023年5月28日
    0106
  • 每天一个 HTTP 状态码 204

    204 No Content 表示服务器成功地处理了客户端的请求,但是… 204 No Content 204 No Content 表示服务器成功地处理了客户端的请求…

    Linux 2023年6月7日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球