侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

docker基础镜像

芳华是个男孩!
2024-10-11 / 0 评论 / 0 点赞 / 30 阅读 / 0 字
广告 广告

1、Docker镜像讲解

1.1、镜像是什么

镜像,即创建容器的模版,含有启动容器所需要的文件系统及所需要的内容,因此镜像主要用于方便和快速的创建并启动容器,它包含了运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包docker镜像,就可以直接跑起来。

1.2、镜像原理

镜像含里面是一层层的文件系统,叫做 UnionFS(联合文件系统),联合文件系统,可以将几层目录挂载到一起(就像千层饼,洋葱头,俄罗斯套娃一样),形成一个虚拟文件系统,虚拟文件系统的目录结构就像普通 linux 的目录结构一样,镜像通过这些文件再加上宿主机的内核共同提供了一个 linux 的虚拟环境,每一层文件系统叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是镜像中每一层文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层也不需要知道里面有几层,结构如下:

一个典型的 Linux文件系统由bootfs和rootfs两部分组成,bootfs(boot file system) 主要包含bootloader和kernel,bootloader主要用于引导加载 kernel,当 kernel 被加载到内存中后bootfs会被umount 掉,rootfs (root file system) 包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc 等标准目录和文件,下图就是镜像中最基础的两层结构,不同的 linux 发行版(如 ubuntu 和 CentOS ) 在 rootfs 这一层会有所区别。

一般的镜像通常都比较小,官方提供的Ubuntu镜像只有60MB多点,而CentOS基础镜像也只有200MB左右,一些其他版本的镜像甚至只有几MB,比如:busybox 才1.22MB,alpine镜像也只有5M左右。镜像直接调用宿主机的内核,镜像中只提供rootfs,也就是只需要包括最基本的命令、工具和程序库就可以了。

下图就是有两个不同的镜像在一个宿主机内核上实现不同的rootfs。

容器、镜像父镜像:

2、Docker镜像命令

2.1、Docker帮助命令

docker version    #查看版本 
docker info    #查看系统信息 
docker 命令 --help    #查看命令帮助

2.2、命令帮助文档地址

#国外官方帮助文档地址 
https://docs.docker.com/reference/ 
#国内官方帮助文档地址 
https://dockerdocs.cn/reference/index.html

2.3、Docker镜像命令

(1)dcoker images

#查看所有本地主机镜像,可选项如下:

名称,简写

默认

描述

--all,-a

显示所有图像(默认隐藏中间图像)

--digests

显示摘要

--filter,-f

根据提供的条件过滤输出

--format

使用Go模板打印漂亮的图像

--no-trunc

不要截断输出

--quiet,-q

仅显示图片ID

示例1:显示本地镜像

[root@localhost ~]# docker images
REPOSITORY(#镜像仓库源)    TAG(#镜像标签)       IMAGE ID(#镜像ID)       CREATED(#创建时间)        SIZE(#镜像大小)
hello-world                   latest                9c7a54a9a43c               2 months ago                13.3kB

示例2:显示本地所有镜像ID

[root@localhost ~]# docker images -aq
9c7a54a9a43c

#搜索镜像,可选参数如下:

名称,简写

默认

描述

--filter,-f

根据提供的条件过滤输出

--format

使用Go模板进行漂亮的打印搜索

--limit

25

最多搜索结果数

--no-trunc

不要截断输出

示例1:搜索mysql镜像

[root@localhost ~]# docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14336     [OK]
mariadb                         MariaDB Server is a high performing open sou…   5473      [OK]
percona                         Percona Server is a fork of the MySQL relati…   618       [OK]
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   840       [OK]
bitnami/mysql                   Bitnami MySQL Docker Image                      93                   [OK]
circleci/mysql                  MySQL is a widely used, open-source relation…   29
bitnami/mysqld-exporter                                                         5
ubuntu/mysql                    MySQL open source fast, stable, multi-thread…   51
cimg/mysql                                                                      0
rapidfort/mysql                 RapidFort optimized, hardened image for MySQL   23
rapidfort/mysql8-ib             RapidFort optimized, hardened image for MySQ…   9
google/mysql                    MySQL server for Google Compute Engine          23                   [OK]
hashicorp/mysql-portworx-demo                                                   0
rapidfort/mysql-official        RapidFort optimized, hardened image for MySQ…   7
newrelic/mysql-plugin           New Relic Plugin for monitoring MySQL databa…   1                    [OK]
databack/mysql-backup           Back up mysql databases to... anywhere!         89
bitnamicharts/mysql                                                             0
linuxserver/mysql               A Mysql container, brought to you by LinuxSe…   38
mirantis/mysql                                                                  0
docksal/mysql                   MySQL service images for Docksal - https://d…   0
linuxserver/mysql-workbench                                                     50
vitess/mysqlctld                vitess/mysqlctld                                1                    [OK]
eclipse/mysql                   Mysql 5.7, curl, rsync                          0                    [OK]
drupalci/mysql-5.5              https://www.drupal.org/project/drupalci         3                    [OK]
drupalci/mysql-5.7              https://www.drupal.org/project/drupalci         0

示例2:通过条件来过滤

查找收藏大于3000以上的mysql镜像

[root@localhost ~]# docker search -f stars=3000 mysql
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   14336     [OK]
mariadb   MariaDB Server is a high performing open sou…   5473      [OK]

(3)docker pull

#下载镜像,可选参数如下:

名称,简写

默认

描述

--all-tags,-a

将所有标记的图像推送到存储库中

--disable-content-trust

true

跳过图像签名

--quiet,-q

禁止详细输出

示例1:拉取mysql镜像

[root@localhost ~]# docker pull mysql  #可指定版本下载,参数-a
Using default tag: latest    #如果不写tag,默认以最新镜像拉取mysql
latest: Pulling from library/mysql
49bb46380f8c: Pull complete    #分层下载,docker image的核心  联合文件系统
aab3066bbf8f: Pull complete
d6eef8c26cf9: Pull complete
0e908b1dcba2: Pull complete
480c3912a2fd: Pull complete
264c20cd4449: Pull complete
d7afa4443f21: Pull complete
d32c26cb271e: Pull complete
f1f84a2204cb: Pull complete
9a41fcc5b508: Pull complete
7b8402026abb: Pull complete
Digest: sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf    #签名信息
Status: Downloaded newer image for mysql:latest    
docker.io/library/mysql:latest    #真实地址,等价于:docker pull mysql

示例2:指定版本下载mysql

例如下载mysql5.7版本

[root@localhost ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
0ceb82207cd7: Pull complete
37f2405cae96: Pull complete
e2482e017e53: Pull complete
70deed891d42: Pull complete
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

查看当前本机所有镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         latest    7c5ae0d3388c   2 days ago      577MB
hello-world   latest    9c7a54a9a43c   2 months ago    13.3kB
mysql         5.7       c20987f18b13   19 months ago   448MB

(4)docker rmi

#删除镜像,可选参数如下:

名称,简写

默认

描述

--force,-f

强制删除图像

--no-prune

不要删除未加标签的父母

示例1:通过镜像ID的方式删除,

[root@localhost ~]# docker images    #查询本地所有镜像
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         latest    7c5ae0d3388c   2 days ago      577MB
hello-world   latest    9c7a54a9a43c   2 months ago    13.3kB
mysql         5.7       c20987f18b13   19 months ago   448MB
[root@localhost ~]# docker rmi 7c5ae0d3388c    #删除ID为7c5ae0d3388c的镜像,删除多个之间用空格隔开
Untagged: mysql:latest
Untagged: mysql@sha256:51c4dc55d3abf4517a5a652794d1f0adb2f2ed1d1bedc847d6132d91cdb2ebbf
Deleted: sha256:7c5ae0d3388cc6f2c72e73c8b1b9a7ba29347d9d7117d426b5cd83c3b71fe2b9
Deleted: sha256:1835f63a5c50ac6bb1c76f3638c0dc1f12cb83e8785bbf0eaaf8b00394053537
Deleted: sha256:788096e6099967e0445ccdc4e3325c8b5d7bc9c01a4ce088809b8326cf89411b
Deleted: sha256:878ac3c36da9ad2b13267633221bfe86c766d695c3262cd45a009cbbcb5eee80
Deleted: sha256:b43c1c5f46700a04d887f5cc287135201e998c78e1d409ac7ce0d99bdb10e40f
Deleted: sha256:a08656a69d8bcec37e2edc478f21859d2a59d6344bad7016572bcb32ed9e1bf8
Deleted: sha256:7c324acd73d89feffe4d9870915c21aa9fc57159cd3a990a54cc1a10bc0b5282
Deleted: sha256:7b935957c6b8cb4cfecb1109ffceacbf3b100d48c2c842bffbe667ada0d7bf51
Deleted: sha256:798dc96d1cbbb087d228d7ee1542e81181d99c5feef7d646061fb1be60f0a600
Deleted: sha256:ac5998110c5937efa17d9ab7a09324d73ed1b8626c623d4f079d73d92bb573a6
Deleted: sha256:55cba8d2bd703353ff4e0958d6cf47d334cf2b7af665d18e7524d5e062d36a14
Deleted: sha256:32f7f5f86853e4f33f21f8c84cb800dcad0b678f3571e5ef342cfbb0a369b103
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    9c7a54a9a43c   2 months ago    13.3kB
mysql         5.7       c20987f18b13   19 months ago   448MB

示例2:删除所有镜像

[root@localhost ~]# docker rmi -f $(docker images -qa)    #以递归的方式删除所有镜像
Untagged: hello-world:latest
Untagged: hello-world@sha256:926fac19d22aa2d60f1a276b66a20eb765fbeea2db5dbdaafeb456ad8ce81598
Deleted: sha256:9c7a54a9a43cca047013b82af109fe963fde787f63f9e016fdc3384500c2823d
Untagged: mysql:5.7
Untagged: mysql@sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Deleted: sha256:c20987f18b130f9d144c9828df630417e2a9523148930dc3963e9d0dab302a76
Deleted: sha256:6567396b065ee734fb2dbb80c8923324a778426dfd01969f091f1ab2d52c7989
Deleted: sha256:0910f12649d514b471f1583a16f672ab67e3d29d9833a15dc2df50dd5536e40f
Deleted: sha256:6682af2fb40555c448b84711c7302d0f86fc716bbe9c7dc7dbd739ef9d757150
Deleted: sha256:5c062c3ac20f576d24454e74781511a5f96739f289edaadf2de934d06e910b92
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE


0
广告 广告

评论区