Docker自学文档
学前零星使用操作
一、基础镜像篇
二、基础容器篇
三、容器数据卷
四、DockerFile构建镜像
五、网络篇
六、Docker Compose
docker 在已经启动的容器中开启端口映射
ubuntu22.04使用docker-compose部署最美博客系统
本文档使用 MrDoc 发布
-
+
home page
一、基础镜像篇
## 1、Docker镜像讲解 ### 1.1、镜像是什么 镜像,即创建容器的模版,含有启动容器所需要的文件系统及所需要的内容,因此镜像主要用于方便和快速的创建并启动容器,它包含了运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包docker镜像,就可以直接跑起来。 ### 1.2、镜像原理 镜像含里面是一层层的文件系统,叫做 UnionFS(联合文件系统),联合文件系统,可以将几层目录挂载到一起(就像千层饼,洋葱头,俄罗斯套娃一样),形成一个虚拟文件系统,虚拟文件系统的目录结构就像普通 linux 的目录结构一样,镜像通过这些文件再加上宿主机的内核共同提供了一个 linux 的虚拟环境,每一层文件系统叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是镜像中每一层文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层也不需要知道里面有几层,结构如下: ![](/media/202309/image-20200125191859179.png) 一个典型的 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。 ![](/media/202309/image-20200125192030712.png) 容器、镜像父镜像: ![](/media/202309/image-20200125192043119.png) ## 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 ``` #### (2)docker search #搜索镜像,可选参数如下: | 名称,简写 | 默认 | 描述 | | ------------ | ---- | ---------------------------- | | --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 ``` ------
admin
Sept. 19, 2023, 4:50 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
IT集中营导航
IT集中营导航
Markdown文件
share
link
type
password
Update password