一、镜像相关命令

官方文档: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搜索镜像

当需要从网络中找出需要的镜像,就可以通过以下命令搜索。

docker search 镜像名称

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

1.3拉取镜像

拉取镜像就是从中央仓管总下载镜像到本地

docker pull 镜像名称

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

通过 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`

注意:如果通过了某个镜像创建了容器,则该镜像无法删除。

解决办法:先删除镜像中的容器,在删除该镜像。

二、容器相关命令

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

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

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

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

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, 可以查看详细数据挂载信息。

2.5.5只读只写

只读:只能通过修改宿主机内容实现对容器的数据管理

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

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

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

2.5.6继承(volumes-from)

也就是将其他一个或多个容器继承于某一个容器的挂载目录

# 容器 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

Docker最常用的镜像命令和容器命令的更多相关文章

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

    本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份.熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像 ...

  2. docker常用命令、镜像命令、容器命令、数据卷,使用dockerFile创建镜像,dockefile的语法规则。

    一.docker常用命令? 1. 常用帮助命令 1.1 docker的信息以及版本号 /* docker info 查看docker的信息 images2 docker本身就是一个镜像. docker ...

  3. 3、docker常用命令:help、镜像命令、容器命令

    1.帮助命令 1.docker version 2.docker info 3.重点掌握:docker --help 2.镜像命令 1.docker,镜像,容器关系 2.docker images ( ...

  4. Docker系列(7)- 常用命令(3) | 容器命令

    容器命令 说明: 有了镜像才可以创建容器:下载一个centos镜像进行练习,相当于在Linux里面再见一个Linux虚拟机 [root@localhost ~]# docker pull centos ...

  5. 【Docker学习之三】Docker查找拉取镜像、启动容器、容器使用

    环境 docker-ce-19.03.1-3.el7.x86_64 CentOS 7 一.查找.拉取镜像.启动容器1.查找镜像-docker search默认查找Docker Hub上的镜像,举例:D ...

  6. Docker基础修炼2--Docker镜像原理及常用命令

    通过前文的讲解对Docker有了基本认识之后,我们开始进入实战操作,本文先演示Docker三要素之镜像原理和相关命令. 本文的演示环境仍然沿用上一篇文章在本地Centos7中安装的环境,如果你本地没有 ...

  7. docker 9 docker的容器命令

    有镜像才能创建容器,这是根本的前提 下面我们以下载一个centos镜像来做演示. [root@t-docker chenzx]# docker images REPOSITORY TAG IMAGE ...

  8. Docker的centos镜像内无法使用systemctl命令的解决办法

    在Docker官方的centos镜像内无法使用systemctl命令的解决办法, 使用该命令docker报错 Failed to get D-Bus connection: Operation not ...

  9. Docker之commit制作镜像

    一.docker是什么? Docker是一个为开发人员和系统管理员提供分布式应用程序的开放平台.它是一个开源的容器引擎,基于Go语言并遵从Apche2.0协议开源. 功能:Docker可以让开发者打包 ...

随机推荐

  1. strtok()出现segment fault的错误

    在写一个简易的 shell 时,需要将命令行的命令通过空格分割成一个个字符串参数,这里我使用了 strtok() 函数,然后遇到了 segment fault 的错误. 出现问题的代码如下: 终于寻找 ...

  2. 【C# .Net GC】条件自动垃圾回收 HandleCollector类

    条件自动回收 达到指定条件后自动执行GC回收垃圾. GC中的方法AddMemoryPressure和RemoveMemoryPressure 本机资源有时会消耗大量内存,但用于包装它的托管对象只占用很 ...

  3. LeetCode-006-Z 字形变换

    Z 字形变换 题目描述:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 ...

  4. Hive数仓

    分层设计 ODS(Operational Data Store):数据运营层  "面向主题的"数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取.洗净. ...

  5. 通过媒体查询来实现 WPF 响应式设计

    WPF 客户端经常需要运行在各种不同大小屏幕下,为了显示友好,所以开发的时候都需要考虑响应式设计. 布局往往通过指定比例,而不直接指定准确的大小来实现响应式布局(如 Width="3*&qu ...

  6. Docker-镜像常用命令&安装Mysql\Nginx\ES\Kibana练习

    目录 前言: 一.常用命令 1.帮助命令 2.查看现在本地有哪些镜像 3.镜像搜索&下载&运行&停止&删除 镜像搜索 镜像下载 不指定版本下载 指定版本下载 运行镜像 ...

  7. 关于stationary 和non-stationary signals 的区别和定义

    结论:实际上在生活中是没有静态信号(stationary signals)的.而我们之所以把随机信号分为stationary and non-stationary 完全是根据信号产生的特征(chara ...

  8. Spring Cloud Ribbon 中的 7 种负载均衡策略

    负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者--客户端负载均衡器. 服务端负载均衡器的问题是,它提供了更强的流量控制权,但 ...

  9. NSView subview blocking drag/drop event

    原文链接 近期在Mac项目中有一个处理鼠标拖拽事件的需求, 大致处理流程是这样的: 从 NSView 继承得到一个子类 覆盖处理拖拽事件相关方法 注册拖拽事件 开始的时候一切都很正常,直到某次发现拖拽 ...

  10. spring——IOC理论

    这里主要是对于IOC理论提出的一个认识 dao接口 public interface Fruit { String getFruit(); } dao接口的实现类 public class Fruit ...