文章目录

  • 一、Docker镜像
    • 1.获取镜像
    • 2.列出镜像
    • 3.删除本地镜像
      • Untagged 和 Deleted
    • 4.Dockerfile制作镜像
  • 二、Docker容器

内容来源于Chapter 2 Docker镜像与容器

一、Docker镜像

1.获取镜像

Docker Hub 上有大量的高质量的镜像可以用,从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

  • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub(docker.io)。
  • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。

例如使用命令$ docker pull ubuntu:18.04,会进行如下操作

18.04: Pulling from library/ubuntu
92dc2a97ff99: Pull complete
be13a9d27eb8: Pull complete
c8299583700a: Pull complete
Digest: sha256:4bc3ae6596938cb0d9e5ac51a1152ec9dcac2a1c50829c74abd9c4361e321b26
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub (docker.io)获取镜像。而镜像名称是 ubuntu:18.04,因此将会获取官方镜像 library/ubuntu 仓库中标签为 18.04 的镜像。docker pull 命令的输出结果最后一行给出了镜像的完整名称,即: docker.io/library/ubuntu:18.04。

从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。

注:如果从 Docker Hub 下载镜像非常缓慢,可以参照 镜像加速器 一节配置加速器。

2.列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
redis                latest              5f515359c7f8        5 days ago          183 MB
nginx                latest              05a60462f8ba        5 days ago          181 MB
mongo                3.2                 fe9198c04d62        5 days ago          342 MB
<none>               <none>              00285df0df87        5 days ago          342 MB
ubuntu               18.04               329ed837d508        3 days ago          63.3MB
ubuntu               bionic              329ed837d508        3 days ago          63.3MB

列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。

3.删除本地镜像

删除本地的镜像,可以使用 docker image rm 命令,其格式为:

$ docker image rm [选项] <镜像1> [<镜像2> ...]

用 ID、镜像名、摘要删除镜像,其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要。
比如我们有这么一些镜像:

$ docker image ls
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
centos                      latest              0584b3d2cf6d        3 weeks ago         196.5 MB
redis                       alpine              501ad78535f0        3 weeks ago         21.03 MB
docker                      latest              cf693ec9b5c7        3 weeks ago         105.1 MB
nginx                       latest              e43d811ce2f4        5 weeks ago         181.5 MB
  • 用镜像的完整 ID(长ID)来删除镜像。更多的时候是用 短ID (一般取前3个字符以上)来删除镜像。例如$ docker image rm 501
  • 我们也可以用镜像名,也就是 <仓库名>:<标签>,来删除镜像。例如$ docker image rm centos
  • 更精确的是使用 镜像摘要 删除镜像。$ docker image rm node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164422be228
  • 用 docker image ls 命令来配合:$ docker image rm $(docker image ls -q redis)

Untagged 和 Deleted

一个镜像可以有多个标签。当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。当该镜像所有的标签都被取消了且没有任何依赖时,会触发删除行为。

4.Dockerfile制作镜像

二、Docker容器

容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。

  • 新建并启动容器命令:docker run,例子输出一个hello world:$ docker run ubuntu:18.04 /bin/echo 'Hello world'
  • 启动已终止容器:docker container start
  • 停止容器:docker stop
  • 重启容器:docker start
  • 后台运行容器,通过添加 -d 参数:docker run -d
  • 进入容器:docker attachdocker exec
    attach和exec的区别:
    (1)attach直接进入容器启动命令的终端,不会启动新的进程;
    (2)exec则是在容器中打开新的终端,并且可以启动新的进程;
    (3)如果想直接在终端中查看命令的输出,用attach,其他情况使用exec;
  • 暂停容器:docker pause
  • 删除容器:docker container rm
  • 导出容器;docker export
  • 导入容器快照:docker import

Docker组队学习(二)相关推荐

  1. Docker组队学习(三)

    Docker 数据管理 一.数据卷 1.创建一个数据卷 2.启动一个挂载数据卷的容器 3.查看数据卷的具体信息 4.删除数据卷 二.挂载主机目录 1.挂载一个主机目录作为数据卷 2.挂载一个本地主机文 ...

  2. Docker组队学习(一)

    文章目录 一.Docker简介 二.三大基本概念 1.镜像(Image) 分层存储 2.容器(Container) 3.仓库(Repository) (1)Docker Registry 公开服务 ( ...

  3. 【组队学习】【24期】Datawhale组队学习内容介绍

    第24期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: 零基础入门语音识别(食物声音识别) Docker教程 数据挖掘实践(智慧海洋) 集成学习(中) 河北邀请赛(二手车价 ...

  4. Docker学习二:Docker镜像与容器

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  5. 【组队学习】【24期】Docker教程

    Docker教程 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Docker 基本信息 贡献人员: ...

  6. leetcode组队学习——查找(二)

    文章目录 1.两数之和 15. 三数之和 16. 最接近的三数之和 18. 四数之和 454. 四数相加 II 49. 字母异位词分组 447. 回旋镖的数量 149. 直线上最多的点数 1.两数之和 ...

  7. 【组队学习】【35期】吃瓜教程——西瓜书+南瓜书

    吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:凌亮 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...

  8. 【组队学习】一月微信图文索引

    一月微信图文索引 一.组队学习相关 周报: [新周报(049)]Datawhale组队学习 Datawhale组队学习周报(第048周) Datawhale组队学习周报(第047周) Datawhal ...

  9. Datawhale组队学习周报(第047周)

    本周报总结了从 2021年01月03日至2022年01月09日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. ...

最新文章

  1. [4月21日]《51CTO 编辑部的外传》——剧本篇(上)
  2. IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
  3. STL中的set容器的一点总结
  4. ORA-07445 [kkoipt()+3881] [SIGSEGV] [Address not mapped to object] 问题
  5. html+css个人博客_如何在互联网放置 HTML 页面
  6. 【Kafka】如何判断一个kafka集群是否稳定
  7. linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
  8. 3D中obj文件操作
  9. 关于手机联系人的改进想法
  10. c#使用类库nthereum在.net上开发以太坊的实战示例
  11. 服务器维护合同需要交印花税吗,服务合同需要交印花税吗
  12. 一个浏览器播放5个或者6个flv的视频就不能播放了
  13. 电脑重装系统苹果笔记本开不了机的解决措施有哪些
  14. 手机图形计算器matlab,图形计算器Mathlab
  15. 信息检索导论要点整理
  16. 深度学习论文: Computer Vision for Road Imaging and Pothole Detection: A State-of-the-Art Review
  17. 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
  18. Html 语法学习笔记三
  19. 哨向 Mika Lelush 2
  20. 读取STM32F207/40x的CPU唯一ID(Unique Device ID)号方法

热门文章

  1. 平时如何管理你的项目?
  2. linux自学笔记--DNS服务器
  3. Android中的WebView之loadDataWithBaseURL()与loadData()
  4. 《5》CentOS7.0+OpenStack+kvm云平台部署—配置Horizon
  5. linux 软raid配置-系统安装
  6. 雅虎的用户注册页面抽风了
  7. 图片简单上色,花开花落云卷云舒。
  8. 运动会计算机系,秋季运动会计算机系总结计划 (12页)-原创力文档
  9. 一网打尽软件测试面试必问的所有Web测试点,你不知道的这都有!
  10. 【入门篇】黑盒测试基础