Docker 容器化部署核心实战:从镜像仓库管理、容器多参数运行到 Nginx 服务配置与正反向代理原理解析
本篇摘要
本文系统讲解Docker核心操作,涵盖仓库管理(登录/拉取/推送/搜索)、镜像处理(查看/打标签)、Nginx安装与页面修改,以及容器运行(docker run参数详解),结合图文演示关键步骤,助你快速掌握Docker基础应用。
欢迎拜访: 点击进入博主主页
本篇主题: Docker仓库操作+镜像操作+容器run操作全方位解析
制作日期: 2025.09.13
隶属专栏: 点击进入所属Docker专栏
一.Docker仓库基础命令
Docker 仓库操作命令
-
docker login(登录仓库)
- 功能:登录 Docker 镜像仓库(默认 Docker Hub,国内可用阿里云/腾讯云等替代)
- 语法:
docker login [OPTIONS] [SERVER]
- 关键参数:
-u
(用户名)、-p
(密码) - 备注:必须掌握,推送镜像前需要先登录
如:
如:
先从官网登录:
然后对应输入即可:
-
docker pull(拉取镜像)
-
功能:从仓库拉取或更新镜像
-
语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-
关键参数:
-a
(拉取所有 tagged 镜像)、--disable-content-trust
(忽略校验) -
备注:必须掌握
-
如:id或者tag
首先先从对应官网获取:
标签pull:
id pull:
操作:
-
docker push(推送镜像)
-
功能:将本地镜像推送到仓库
-
语法:
docker push [OPTIONS] NAME[:TAG]
-
关键参数:
-a
(推送所有 tagged 镜像)、--disable-content-trust
(忽略校验) -
备注:必须掌握,需先登录
-
首先先要搞一个仓库(登录时候的界面):
进行创建:
然后得到对应仓库,这里让我们按照这个格式进行推送,因此需要起别名给镜像:
如下:
起别名:
docker tag nginx:latest youxinga/tmp_repository:mynginx
推送:
docker push youxinga/tmp_repository:mynginx
-
docker search(查找镜像)
-
功能:从 Docker Hub 搜索镜像
-
语法:
docker search [OPTIONS] TERM
-
关键参数:
--no-trunc
(显示完整描述)、-f
(按条件过滤,如 star 数) -
备注:必须掌握,但国内因网站被封暂时无法实操
-
对应指令操作:
-
docker logout(登出仓库)
- 功能:从镜像仓库登出
- 语法:
docker logout [SERVER]
- 备注:必须掌握,通常用 Docker Hub,也可用阿里云/腾讯云练习
Docker 镜像操作命令
-
docker images(列出本地镜像)
- 功能:查看本地已有的 Docker 镜像
- 语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
- 别名:
docker image ls
、docker image list
- 关键参数:
-a
(显示所有,包括中间层)、-q
(只显示 ID)、--no-trunc
(显示完整信息)
如下(一些搭配的使用):
也可以结合linux系统命令使用:
-
docker image inspect(查看镜像详情)
- 功能:查看某个镜像的详细信息(如配置、历史等)
- 语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
使用两种方式:
-
docker tag(标记镜像)
- 功能:给本地镜像打标签,用于推送或归类
- 语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
- 别名:
docker image tag
进行使用:
这里看起来好像多了一个,但实际没有被本地复制。
总结下
命令 | 功能 | 是否必须掌握 |
---|---|---|
docker login | 登录镜像仓库 | ✅ |
docker pull | 拉取镜像 | ✅ |
docker push | 推送镜像 | ✅ |
docker search | 搜索镜像 | ✅(但国内暂不可用) |
docker logout | 登出仓库 | ✅ |
docker images | 查看本地镜像 | ✅ |
docker image inspect | 查看镜像详情 | ✅ |
docker tag | 给镜像打标签 | ✅ |
二.基于ubuntu安装宿主机上nginx并修改页面
下面先介绍下web服务器以及nginx:
-
Web服务器:
- 指驻留在互联网上的程序,也叫“WWW服务器”。
- 可向客户端提供文档、放置网站文件供浏览、放置数据文件供下载。
- 主要功能是提供网上信息浏览服务,是互联网使用最广泛的服务之一。
- 示例:百度是Web服务器,提供搜索服务。
-
Nginx:
- 是自由、开源、高性能的HTTP服务器和反向代理服务器。
- 同时也是IMAP、POP3、SMTP代理服务器。
- 可作为HTTP服务器发布网站,也可作为反向代理实现负载均衡。
- 属于Web服务器的一种实现。
如: 手机、电脑、平板等客户端可通过Nginx搭建的Web服务器访问网站(如www.baidu.com)。
简单理解正反向代理:
正向代理:
就像代购:你(客户端)想访问国外网站,但自己上不去,就找了个代理服务器(代购)
帮你去买。
- 谁设置? 你自己(客户端)主动设置代理。
- 谁知道? 目标网站只看到代理服务器,不知道是你访问的。
- 用途:翻墙、隐藏你的IP、绕过限制。
反向代理(帮网站扛流量):
就像饭店前台:你(用户)去网站吃饭,但背后有多个厨师(服务器)。反向代理(前台)
先接待你,再决定让哪个厨师做菜。
- 谁设置? 网站老板(服务端)部署的。
- 谁知道? 你只和前台打交道,不知道后面有几个厨师。
- 用途:分摊流量(防宕机)、隐藏服务器、加速访问。
总结:
- 正向代理 = 你找代理帮你上网(客户端主动)。
- 反向代理 = 网站找代理帮你扛流量(服务端主动)。
下面进行操作:
首先检查下机器是否存在nginx(相当于起到百度效果),卸载掉(这里杀死master进程,其他都没了):
进行完全卸载:
更新完apt源后重新安装,并启动:
查看对应配置信息位置:
根据回显的配置信息找到对应文件进行修改:
进行首页编辑:
下面访问结果:
这里默认是80端口启动。
三.Docker
镜像仓库之容器命令之Docker run
简单介绍:
基本信息:
- 功能:创建一个新的容器并运行一个命令。
- 语法:
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 退出的时候自动删除容器。
无参及-d选项简单使用
首先我们进行centos系统的镜像拉取(本地有啥也不干,否则去Docker对应残仓库拉取),然后进行测试:
- 发现没有正在运行,但是本地是有这个镜像。
然后给它启动一下:
- 发现没有在运行,因为这里就相当于一个main函数,没识别到终端操作,就立刻执行完退出来。
结合-it命令给它个伪终端:
- 确实模拟出来centos7环境。
- 确实在运行。
下面用一下-d标志(返回的容器id),让它在后台运行:
- 符合预期。
-i -t -it 选项简单使用
-i:
进行运行:
- 这里发现只有交互响应,但是没有终端标志。
-t:
- 存在终端但是不能正常交互,即伪终端,但是有显示运行中。
-it:
- 正常运行。
-p -P选项简单使用
首先先看张图:
- 这个命令就是把对应的服务器主机上端口和对镜像容器端口给它打通,然后访问对应服务器端口,就能直接访问到对应容器。
-p:
- 之前运行的nginx绑定对应的映射那边就是服务器的80,因此需要换一个。
- 可以看到访问成功。
-P:
- 可以看到随机映射的主机端口到容器的端口。
- 但是这里看不到,因为云服务器本身没开放这些端口(比如防火墙等)。
- 访问也是无效的。
- 使用curl,通过本地环回能从服务器内部访问到对应的端口,进而访问到对应的容器。
- -name -h -e 选项简单使用
-name:
- 已经在运行了。
-h:
- 主机名被更改但是容器名字没有被更改。
-e:
–cpuset-cpus -m 选项简单使用
--cpuset-cpus:
- 指定范围内的cpu进行运行。
-m:
- 允许的就是最大内存。
下面设置下限制500mb:
- 设置成功。
–link 选项简单使用
首先创建个别名为centos2的容器:
然后在创建centos4,把它链接到centos4中,接着从4容器中ping一下2容器(给它起了个别名叫m2,不起的话及时ping centos2):
- 发现能ping通。
查看对应etc/hosts:
- 发现4中保存了2的对的本地ip地址,然后就能通过本地DNS解析找到本地中2容器对应的位置。
- 发现2号容器没有保存4号的本地ip等信息故无法ping通。
–rm 选项简单使用
首先搞一个容器c5:
- 正在运行。
下面exit下,然后再检查下:
- 发现不仅仅没有运行,连记录都没有了,符合预期,成功删除。
四. 本篇小结
本篇讲了Docker操作核心:仓库管理(登录推拉镜像)、镜像维护(查看/打标)、容器运行(docker run多参数灵活配置),结合Nginx实战与正反向代理理解,掌握基础即能高效部署应用。