Docker组队学习(二)
文章目录
- 一、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 attach
或docker exec
attach和exec的区别:
(1)attach直接进入容器启动命令的终端,不会启动新的进程;
(2)exec则是在容器中打开新的终端,并且可以启动新的进程;
(3)如果想直接在终端中查看命令的输出,用attach,其他情况使用exec; - 暂停容器:
docker pause
- 删除容器:
docker container rm
- 导出容器;
docker export
- 导入容器快照:
docker import
Docker组队学习(二)相关推荐
- Docker组队学习(三)
Docker 数据管理 一.数据卷 1.创建一个数据卷 2.启动一个挂载数据卷的容器 3.查看数据卷的具体信息 4.删除数据卷 二.挂载主机目录 1.挂载一个主机目录作为数据卷 2.挂载一个本地主机文 ...
- Docker组队学习(一)
文章目录 一.Docker简介 二.三大基本概念 1.镜像(Image) 分层存储 2.容器(Container) 3.仓库(Repository) (1)Docker Registry 公开服务 ( ...
- 【组队学习】【24期】Datawhale组队学习内容介绍
第24期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: 零基础入门语音识别(食物声音识别) Docker教程 数据挖掘实践(智慧海洋) 集成学习(中) 河北邀请赛(二手车价 ...
- Docker学习二:Docker镜像与容器
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- 【组队学习】【24期】Docker教程
Docker教程 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Docker 基本信息 贡献人员: ...
- leetcode组队学习——查找(二)
文章目录 1.两数之和 15. 三数之和 16. 最接近的三数之和 18. 四数之和 454. 四数相加 II 49. 字母异位词分组 447. 回旋镖的数量 149. 直线上最多的点数 1.两数之和 ...
- 【组队学习】【35期】吃瓜教程——西瓜书+南瓜书
吃瓜教程--西瓜书+南瓜书 航路开辟者:谢文睿.秦州 领航员:凌亮 航海士:谢文睿.秦州 基本信息 开源内容:https://github.com/datawhalechina/pumpkin-boo ...
- 【组队学习】一月微信图文索引
一月微信图文索引 一.组队学习相关 周报: [新周报(049)]Datawhale组队学习 Datawhale组队学习周报(第048周) Datawhale组队学习周报(第047周) Datawhal ...
- Datawhale组队学习周报(第047周)
本周报总结了从 2021年01月03日至2022年01月09日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. ...
最新文章
- [4月21日]《51CTO 编辑部的外传》——剧本篇(上)
- IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
- STL中的set容器的一点总结
- ORA-07445 [kkoipt()+3881] [SIGSEGV] [Address not mapped to object] 问题
- html+css个人博客_如何在互联网放置 HTML 页面
- 【Kafka】如何判断一个kafka集群是否稳定
- linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
- 3D中obj文件操作
- 关于手机联系人的改进想法
- c#使用类库nthereum在.net上开发以太坊的实战示例
- 服务器维护合同需要交印花税吗,服务合同需要交印花税吗
- 一个浏览器播放5个或者6个flv的视频就不能播放了
- 电脑重装系统苹果笔记本开不了机的解决措施有哪些
- 手机图形计算器matlab,图形计算器Mathlab
- 信息检索导论要点整理
- 深度学习论文: Computer Vision for Road Imaging and Pothole Detection: A State-of-the-Art Review
- 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
- Html 语法学习笔记三
- 哨向 Mika Lelush 2
- 读取STM32F207/40x的CPU唯一ID(Unique Device ID)号方法