IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker之镜像操作 -> 正文阅读

[系统运维]Docker之镜像操作

本文开启了CI/CD基础入门,遵循以下原则:理论 + 实战 + 总结。

1.1 拉取镜像

命令:
docker [image] pull [regirster]NAME [ :TAG]
其中:
regirster:仓库地址,默认registry.hub.docker.com。
NAME:镜像名称,如nginx。
TAG:镜像标签,默认为 latest 最新的发布版本。

pull 子命令支持的 选项主要包括:
-a,=true|false: 是否获取仓库中的所有镜像,默认为否;
-disable-con:取消镜像的内容校验,默认为真。
–registry-mirror=proxy_URL:来指定镜像代理服务地址。

执行 docker pull nginx:latest,过程如下:

Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
33847f680f63: Pull complete 
dbb907d5159d: Pull complete 
8a268f30c42a: Pull complete 
b10cf527a02d: Pull complete 
c90b090c213b: Pull complete 
1f41b2f2bf94: Pull complete 
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
Status: Downloaded newer image for docker.io/nginx:latest

1.2 查看镜像信息

1.2.1 列出镜像

docker images

[root@aliyun dockerStudy]# docker images
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/nginx           latest                         08b152afcfae        3 weeks ago         133 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

Tips:

  1. 根据镜像名称模糊查找:docker images ngin*
  2. 根据过滤筛选:docker images -f “k1=v1” -f “k2=v2”
    dangling=true|false:显示标记为空的镜像。
    label:这个是根据标签进行过滤,其中lable的值,是docker在编译的时候配置的或者 在Dockerfile中配置的。
    before:这个是根据时间来进行过滤,其中before的value(某个镜像构建时间)之前的镜像列表。
    since:跟before正好相反,表示的是在某个镜像构建之后构建的镜像。
    reference:这个是添加正则进行匹配。

[root@aliyun ~]# docker images
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/nginx           latest                         08b152afcfae        3 weeks ago         133 MB
nginx                     lfc                            08b152afcfae        3 weeks ago         133 MB
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

[root@aliyun ~]# docker images -f "before=nginx:lfc"
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

[root@aliyun ~]# docker images -f "since=docker.io/redis:latest"  -f "before=nginx:lfc"
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB

[root@aliyun ~]# docker images -f "label=maintainer"
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
nginx                     lfc                            08b152afcfae        3 weeks ago         133 MB
docker.io/nginx           latest                         08b152afcfae        3 weeks ago         133 MB
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB

1.2.2 添加镜像标签

docker tag NAME:TAG NAME2:TAG2

[root@aliyun dockerStudy]# docker tag nginx:latest nginx:lfc
[root@aliyun dockerStudy]# docker images nginx*
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              08b152afcfae        3 weeks ago         133 MB
nginx               lfc                 08b152afcfae        3 weeks ago         133 MB

可以发现IMAGE ID 和原来是一样的,可以简单理解为 Linux 的软链接,Windows的快捷方式。

1.2.3 查看镜像信息

docker inspect [-f {{".option"}}] NAME:TAG 返回的是一个JSON数组结构。

[root@aliyun dockerStudy]# docker inspect -f {{".RepoTags"}}  nginx:lfc
[docker.io/nginx:latest nginx:lfc]

1.2.4 查看镜像历史

docker history NAME:TAG 列出各层的镜像信息

[root@aliyun dockerStudy]# docker history nginx:lfc
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
08b152afcfae        3 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daem...   0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["/docker-en...   0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:09a214a3e07c91...   4.61 kB             
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:0fd5fca330dcd6...   1.04 kB             
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5...   1.96 kB             
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:65504f71f5855c...   1.2 kB              
<missing>           3 weeks ago         /bin/sh -c set -x     && addgroup --system...   63.9 MB             
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV PKG_RELEASE=1~buster     0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=0.6.1        0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.1     0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX ...   0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0 B                 
<missing>           3 weeks ago         /bin/sh -c #(nop) ADD file:45f5dfa135c848a...   69.3 MB 

1.3 删除和清理镜像

1.3.1 使用标签删除镜像

docker image rm NAME:TAG
-f:强制删除,即使有容器依赖该镜像,不建议使用该选项,而是 停容器->删容器->删镜像。
-no-prune:不要清理未带标签的父镜像。
注意: 只剩下一个标签的时候,会彻底删除镜像(以及其下所有文件层)。

1.3.2 使用镜像ID删除镜像

docker image rm IMAGE_ID

1.3.3 清理镜像

使用Docker一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使
用的镜像。(类比于Windows中的程序垃圾,也是喜欢MacOS的理由,哈哈)
docker image prune
-a:删除所有无用镜像(没有该镜像起的容器)。
-filter:清理满足过滤条件的镜像。
-f:强制删除镜像。

[root@aliyun ~]# docker images
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/nginx           latest                         08b152afcfae        3 weeks ago         133 MB
nginx                     lfc                            08b152afcfae        3 weeks ago         133 MB
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

[root@aliyun ~]# docker ps
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS                               NAMES
b63b1f311d10        hyperf/hyperf:7.4-alpine-v3.12-swoole-v4.6   "/bin/bash"              4 weeks ago         Up 4 weeks          0.0.0.0:9501->9501/tcp              hyperf
34bcf7a33154        mysql:5.7                                    "docker-entrypoint..."   3 months ago        Up 5 weeks          0.0.0.0:3306->3306/tcp, 33060/tcp   lfc-mysql
c3dcb2bac090        docker.io/redis                              "docker-entrypoint..."   11 months ago       Up 5 weeks          0.0.0.0:6379->6379/tcp              myredis

[root@aliyun ~]# docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: docker.io/nginx:latest
untagged: docker.io/nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
untagged: nginx:lfc
deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4

Total reclaimed space: 133.2 MB

[root@aliyun ~]# docker images
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

1.4 创建镜像

1.4.1 基于已有的容器

docker [container] commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]]
-a:作者。
-c:提交的时候执行Dockerfile指令, 包括 CMD I ENTRYPOINT | ENV I EXPOSE I LABEL I ONBUILD I USER I VOLUME I WORKDIR等。
-m:提交说明。
-p:提交时暂停容器。

[root@aliyun ~]# docker run --name myNginx -p 8080:80 -d nginx
570c98d0654d1620c2f4850f2d0d3963510e43e1a0d35d2eb705218a557c4c15

[root@aliyun ~]# docker commit -m "create my nginx image" -a "lfc" 570c98d0654d1620c2f4850f2d0d3963510e43e1a0d35d2eb705218a557c4c15 test:1.0
sha256:065ebeceed10c8661937a8c9a96a184d7f3ac5a94d66e7279028efda442213b0

[root@aliyun ~]# docker images
REPOSITORY                TAG                            IMAGE ID            CREATED             SIZE
test                      1.0                            065ebeceed10        10 seconds ago      133 MB
docker.io/nginx           latest                         08b152afcfae        3 weeks ago         133 MB
docker.io/hyperf/hyperf   7.4-alpine-v3.12-swoole-v4.6   9ad354753fb9        5 weeks ago         110 MB
docker.io/mysql           5.7                            2c9028880e58        3 months ago        447 MB
docker.io/redis           latest                         41de2cc0b30e        11 months ago       104 MB

1.4.2 基于Dockerfile

这是自定义镜像的精髓,为了学习成体系。在此先简单列出,之后的文章中会详细道出。

1.5 导出和载入镜像

1.5.1 导出

docker image save -o fileName NAME:TAG

[root@aliyun ~]# docker image save -o nginxFile.tar nginx:latest
[root@aliyun ~]# ll
-rw------- 1 root root 137441792 Aug 17 00:06 nginxFile.tar

1.5.2 载入

docker image load -i fileName

[root@aliyun ~]# docker image load -i nginxFile.tar

1.6 上传镜像

docker image push NAME[:TAG] [REGISTER_HOST[:REGISTER_PORT]/]NAME[:TAG]
接下来会需要登录信息,填写即可。

1.7 小结

本篇主要介绍的镜像的基本操作,拉取、查看、删除、创建、导出导入、上传等。其中最关键的是基于Dockerfile构建自己的镜像,其他的多用自然熟能生巧(工具的学习,不必去背,多用了就不会忘记)。

PS:理论部分参考杨保华的《Docker技术入门与实战》,感兴趣的可以阅读之。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:47:33  更:2021-08-17 15:48:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:51:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计