Docker 镜像:是一个只读的模板,它包含了创建并运行一个 Docker 容器所需的所有指令、文件系统和参数。 可以把它想象成一个软件的安装包或模具。这个安装包不仅包含了程序本身,还包含了它运行所需的所有依赖项(如库、环境变量、配置文件等)。
一个生动的比喻:做蛋糕
Docker 镜像仓库:是一个集中存储和分发 Docker 镜像的服务,就像一个专门的应用商店(如 iOS 的 App Store)或代码仓库(如 GitHub),但它只管理 Docker 镜像。
你可以把它想象成一个图书馆:
docker官方架构图:

docker镜像仓库架构图:

docker官网:https://www.docker.com/
实际工作镜像仓库的使用

docker命令学习
命令行:docker --help
官网学习:www.docker.com -> Developers -> Documentation -> Reference ->Docker CLI
docker login
功能:登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法:
docker login [OPTIONS] [SERVER]关键参数
-u: 登陆的用户名-p: 登陆的密码
示例:docker logindocker login https://index.docker.io/vi/docker login -u zhangsandocker pull 功能:从镜像仓库中拉取或者更新指定镜像到本地 语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]关键参数:
-a:拉取所有 tagged 镜像--disable-content-trust:忽略镜像的校验,默认开启
示例:docker pull nginx:1.23.3docker push 功能:将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 语法:
docker push [OPTIONS] NAME[:TAG]别名:docker image push
关键参数:
-a:推送所有 tagged 镜像--disable-content-trust:忽略镜像的校验,默认开启在推送push前需要在官网创建自己的仓库。push推送时需要用这个格式的标签名:用户名/仓库名:标签
使用tag命令将要推送的镜像起一个标签名:
比如:docker tag nginx:1.23.4 zhangsan/mybitnginx:v1.23.4
推送:
docker push zhangsan/mybitnginx:v1.23.4docker search 功能:从 Docker Hub 查找镜像 语法:
docker search [OPTIONS] TERM 关键参数:
--no-trunc:显示完整的镜像描述-f <过滤条件>:列出收藏数不小于指定值的镜像
示例:docker search -f stars=10 nginxdocker logout 功能:登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub 语法:
docker logout [SERVER] docker images 功能:列出本地镜像 语法:
docker images [OPTIONS] [REPOSITORY[:TAG]] 别名:docker image ls, docker image list
关键参数:
-a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);--digests:显示镜像的摘要信息;-f:显示满足条件的镜像;--format:指定返回值的模板文件;--no-trunc:显示完整的镜像信息;-q:只显示镜像 ID。docker image 功能:查看镜像详细信息 语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]示例:
docker image listdocker image inspect 0f8498f13f3adocker image inspect nginx:1.22.1docker tag 功能:标记本地镜像,将其归入某一仓库 语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 别名:docker image tag
示例:
docker tag ubuntu:22.04 zhangsan/myubuntu:v1.22.1Nginx是一款高性能的开源软件,最初被设计为“网页服务器”,但现在更广泛地被用作“反向代理”、“负载均衡器”和“HTTP 缓存”。 可以把它想象成一个高效的“交通枢纽”或“万能前台”,它负责接收所有进入网站的流量(请求),然后智能地将这些流量引导到正确的服务器(或服务)上,同时还能处理安全、加速等多项任务。
反向代理:
HTTP 缓存 Nginx 可以把后端服务器的响应(如网页、图片)临时存储(缓存)在自己这里。 工作流程:当第一个用户请求某个页面时,Nginx 会去后端服务器获取数据,然后返回给用户,同时自己保存一份。当第二个用户请求同一个页面时,Nginx直接把自己缓存的内容返回给用户,而不用再去麻烦后端服务器。
好处:
Nginx安装
检查是否已经安装:ps -ef | grep nginx,如果有了就不用装
下载安装:
sudo apt install nginx -ysudo yum install nginx -ysystemctl restart nginx查看效果: 打开浏览器输入云服务器公网ip,会出现这样的网页:

功能: 创建一个新的容器并运行一个命令 语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]别名:docker container run
关键参数:
-d:后台运行容器,并返回容器 ID-i:以交互模式运行容器,通常与 -t 同时使用-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用-P:随机端口映射,容器内部端口随机映射到主机的端口-p:指定端口映射,格式为:主机(宿主)端口:容器端口--name="nginx-lb":为容器指定一个名称-h "mars":指定容器的 hostname-e username="ritchie":设置环境变量--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2":绑定容器到指定 CPU 运行-m:设置容器使用内存最大值--network="bridge":指定容器的网络连接类型--link=[]:添加链接到另一个容器--volume, -v:绑定一个卷--rm:shell 退出的时候自动删除容器示例:
到官网找到centos7
查看宿主机版本:cat /etc/*release*

将centos:7拉取到本地:docker pull centos:7
运行centos:7:docker run centos:7

这里执行docker run 不带任何选项看上去没有任何效果,其实这个容器已经被打开了但因为没交互所以退出了。
使用docker ps -a可以看到历史执行过的容器
添加-it选项以交互形式运行容器,如下:

注意:通常不会单独使用-i或-t选项,需要两个一起使用,即-it(常用于交互式容器)
接下来我们运行一个nginx:1.24.0容器,如果本地没有会自动从服务器拉取。

使用docker ps查看运行状态
当我们在浏览器中直接访问服务器(宿主机)时,访问的是宿主机本身的服务(如果有的话)。Docker容器拥有独立的网络命名空间,外网无法直接访问容器内的Nginx服务。需要通过端口映射将宿主机的端口与容器的端口进行绑定。例如,将宿主机的7070端口映射到容器Nginx的80端口后,当访问宿主机IP的7070端口时,流量会被自动转发到容器内部的80端口,从而访问到容器中的Nginx服务。 如下-p选项的使用:


-P是绑定随机端口,后面不用带任何信息,该选项很少使用,如:docker run -P -d nginx:1.24.0
--name选项改变容器名字,使用新起的容器名与其交互会变得很方便。

-h:改变容器主机名

-e:添加容器的环境变量

-m:设置容器使用内存最大值,如下给限定容器内存使用500MB
docker run -d -m 500m --name mynginx3 nginx:1.24.0
docker stats mynginx3

-rm选项:shell 退出的时候自动删除容器,使用docker ps -a是查不到的。
如:docker run -it --name=mycentos4 -rm centos:7
功能: 列出容器信息 语法:
docker ps [OPTIONS]别名:docker container ls, docker container list, docker container ps
关键参数:
-a:显示所有的容器,包括未运行的。-f:根据条件过滤显示的内容。--format:指定返回值的模板文件。如 json 或者 table-l:显示 latest 的容器。-n:列出最近创建的 n 个容器。--no-trunc:不截断输出。-q:静默模式,只显示容器编号。-s:显示总的文件大小。查找nginx镜像版本:
方法一:shell中执行docker search nginx如下:(不推荐)

方法二:登陆官网查找:

docker pull nginx:1.24.0docker images nginxdocker image inspect nginx:1.24.0即:
docker run -p 7077:80 --name=myweb -h myweb.com -e myenv=test -d nginx:1.24.0假设我们要调整首页: 添加选项-it,以前台交互的形式启动
docker run -p 7078:80 --name=myweb -h myweb.com -e myenv=test -it nginx:1.24.0 bash此时nginx并没有启动,需要再命令行输入nginx启动nginx。
修改首页:
cd /usr/share/nginx/html/
效果如下:

BusyBox介绍 BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。例如 ls、cat 和 echo 、grep、find、mount 以及 telnet等。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。而所有这一切功能却只有区区 1M 左右的大小。因海外带宽较小,我们拉取该镜像推送到自己的仓库。
CentOS安装:
mkdir -p /data/myhoucd /data/myhouwget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificatemv busybox-x86_64 busybox(可不做)chmod +x busybox./busybox lsUbuntu安装:
apt install busybox -y到Docker官网创建仓库:


docker pull busybox:1.35.0docker tag busybox:1.35.0 saal0/qsy_box:v1.0docker logindocker push saal0/qsy_box:v1.0除此之外还可以推送到腾讯云,阿里云等。登陆腾讯云/阿里云官网,搜索容器镜像服务,就可以搭建自己的仓库,注意推送和拉取规则。这里就不演示。
非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!