本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份。熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像构建、备份恢复迁移、镜像仓库、网络、集群等等更多的内容。

镜像相关命令

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

查看镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

  • REPOSITORY:镜像在仓库中的名称,本文中以后都简称镜像名称
  • TAG:镜像标签
  • IMAGE ID:镜像 ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

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

搜索镜像

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索。

docker search 镜像名称

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

拉取镜像

拉取镜像就是从中央仓库下载镜像到本地。

docker pull 镜像名称

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

通过查看 tag 信息,如果我们要下载 centos7 的镜像。

docker pull centos:7

删除镜像

按镜像 ID 删除镜像。

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

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

docker rmi `docker images -q`

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

容器相关命令

查看容器

查看正在运行的容器。

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE        COMMAND        CREATED        STATUS        PORTS        NAMES

  • CONTAINER ID:容器 ID
  • IMAGE:所属镜像
  • COMMAND
  • CREATED:创建时间
  • STATUS:容器状态
  • PORTS:端口
  • NAMES:容器名称

查看停止的容器。

docker ps -f status=exited

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

docker ps -a

查看最后一次运行的容器。

docker ps -l

创建与启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • -i:表示运行容器;
  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端;
  • --name:为创建的容器命名;
  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;
  • -d:在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);
  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。
  • -P:随机使用宿主机的可用端口与容器内暴露的端口映射。

创建并进入容器

下面这行命令的意思就是通过镜像 AA 创建一个容器 BB,运行容器并进入容器的 /bin/bash

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

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

退出当前容器

exit

守护式方式创建容器

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

登录守护式容器方式

docker exec -it 容器名称|容器ID /bin/bash

停止与启动容器

# 停止容器
docker stop 容器名称|容器ID
# 启动容器
docker start 容器名称|容器ID

文件拷贝

如果我们需要将文件拷贝到容器内可以使用 cp 命令。

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

也可以将文件从容器内拷贝出来。

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

目录挂载(容器数据卷操作)

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

但是容器被删除的时候,宿主机的内容并不会被删除,因为底层是通过拷贝实现的。如果多个容器挂载同一个目录,其中一个容器被删除,其他容器的内容也不会受到影响,同理,底层是拷贝实现的。

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

容器与宿主机之间的数据卷属于引用的关系,数据卷是从外界挂载到容器内部中的,所以可以脱离容器的生命周期而独立存在,正是由于数据卷的生命周期并不等同于容器的生命周期,在容器退出或者删除以后,数据卷仍然不会受到影响,数据卷的生命周期会一直持续到没有容器使用它为止。

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

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

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

匿名挂载

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

# 匿名挂载
docker run -di -v /usr/local/data --name centos7-02 centos:7
# 查看 volume 数据卷信息
docker volume ls

具名挂载

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

# 匿名挂载
docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# 查看 volume 数据卷信息
docker volume ls

指定目录挂载

一开始给大家讲解的方式就属于指定目录挂载,这种方式的挂载不会在 /var/lib/docker/volume 目录生成内容。

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

查看目录挂载关系

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

[root@localhost ~]# docker volume inspect docker_centos_data
[{"CreatedAt": "2020-08-13T20:19:51+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data","Name": "docker_centos_data","Options": null,"Scope": "local"}
]

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

只读/读写

# 只读。只能通过修改宿主机内容实现对容器的数据管理。
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
# 读写,默认。宿主机和容器可以双向操作数据。
docker run -it -v /宿主机目录:/容器目录:rw 镜像名

volumes-from(继承)

# 容器 centos7-01 指定目录挂载
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 容器 centos7-04 和 centos7-05 相当于继承 centos7-01 容器的挂载目录
docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
docker run -di --volumes-from centos7-01 --name centos7-05 centos:7

查看容器 IP 地址

我们可以通过以下命令查看容器的元信息。

docker inspect 容器名称|容器ID

也可以直接执行下面的命令直接输出 IP 地址。

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

删除容器

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

常用命令的练习就到这里,下文我们来一些简单的应用部署练习,加强 Docker 命令的使用。

本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

大家可以通过 分类 查看更多关于 Docker 的文章。

您的点赞转发是对我最大的支持。

扫码关注 哈喽沃德先生「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~

centos 需要哪些常用端口_Docker 最常用的镜像命令和容器命令相关推荐

  1. brew 镜像_Docker牛刀小试:安装及常用的镜像命令和容器命令

    在上一篇我们对Docker做了一个简单介绍,有了一个犹抱琵琶半遮面的认识,这篇文章就揭开这半面黑纱,让Docker安装在我们的电脑上,根据官方文档,我们去操作它,去驾驭它! 我的电脑是Mac,可以通过 ...

  2. Docker学习笔记(一):基本概念、Docker安装、阿里云加速、镜像命令、容器命令、其他常用命令

    Docker概述 1.简介 docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源. docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然 ...

  3. 常用端口号 转载自www.MyException.Cn

    有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的计算机"大门"中自由出入.计算机的"大门"就是我们平常 ...

  4. THREE DAY | 网络安全之Linux(包含Linux常用命令,镜像下载,docker命令等内容)超详细!!!

    THREE DAY | 网络安全之Linux 一.Linux介绍 1.Linux系统简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多 ...

  5. docker 查看镜像_Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指!...

    来自小洋人最HAPPY投稿 一.Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一 ...

  6. docker删除es数据_Docker的常用命令

    Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...

  7. Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

    Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  8. 端口基础常识大全+常用端口对照

    端口基础常识大全+常用端口对照 [color=Red][size=4][b]端口基础常识大全[/b][/size][/color] [color=Green]1) 公认端口(Well Known Po ...

  9. 常用和不常用端口一览表收藏

    大家在学习计算机的时候,对于最常用的几个端口比如80端口肯定有很深的印象,但是对于其他一些不是那么常用的端口可能就没那么了解.所以,在一些使用频率相对较高的端口上,很容易会引发一些由于陌生而出现的错误 ...

最新文章

  1. ​中国自动驾驶技术有多强?你可能还不知道
  2. http的请求类型 get 、post、delete、put、patch之间的区别
  3. WinCE启动失败的原因与解决办法分析
  4. Android:如何实现更换主题
  5. idea使用svn拉取项目代码_IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!...
  6. metrics_FlexyPool如何支持Dropwizard Metrics包重命名
  7. nagios+pnp4nagios+nagiosql+nodutils
  8. Vmware fusion强制断电,关闭虚拟机
  9. php如何防止网站被攻击,防止网站被攻击的办法
  10. 关闭绿联硬盘盒子自动休眠的方法!
  11. linux vim中文使用教程
  12. 网站实时监控,Web网站及前端性能监控方法
  13. Python——Python Enhancement Proposal
  14. python | 数组下表省略号的含义:array[...,:]==array[:,:,0]
  15. windows下hadoop的部署和使用
  16. 论文 Simultaneously Self-Attending to All Mentions for Full-Abstract Biological Relation Extraction
  17. 最新版 Let’s Encrypt免费证书申请步骤,保姆级教程
  18. 润和软件全面参与OLA联盟智能家居专委会举办第三次联调测试活动
  19. 一穷二白的打工仔如何逆袭创业当老板,穷人如何改变我们的命运?
  20. 使用Optional类来消除代码中的null检查

热门文章

  1. Django的分页器(paginator)
  2. 33.JAVA编程思想——JAVA IO File类
  3. Android开发之自定义的ProgressDialog
  4. 点点文刊 -- 记录生活的色彩
  5. [转]EntityFramework走马观花之CRUD(中)
  6. 如何建立一个完整的游戏AI
  7. linux ubuntu系统安装及卸载oracle xe11.2.0
  8. MySQL查看表占用空间大小(转)
  9. IPv6 OSPFv3路由协议(续二)
  10. 数据分析师的全景职业规划,入门、转行都先看这篇