
Docker容器、镜像、网络、仓库完整教程前言一、Docker HelloWorld验证容器运行底层流程1. 最简输出示例2. 交互式容器进入终端调试3. 后台常驻容器服务标准运行方式4. 容器7种状态二、容器全生命周期操作2.1 基础核心概念区分2.2 容器启动多方式2.3 进入运行中容器两种方案重点区分2.4 容器查看、日志、资源监控2.5 容器导入导出、删除清理2.6 Web服务容器实战端口映射基础三、Docker镜像完整管理操作3.1 查看本地镜像列表3.2 搜索、拉取远程镜像3.3 删除本地镜像3.4 两种自定义镜像构建方式方式1基于运行容器提交镜像临时修改方式2Dockerfile标准化构建生产主流3.5 镜像重命名打tag四、Docker容器网络端口映射与容器互联4.1 端口映射两种参数详解4.2 自定义网桥实现容器互通4.3 全局/单容器DNS配置五、Docker仓库Docker Hub镜像管理5.1 仓库基础概念5.2 账号登录/登出5.3 完整镜像推送流程六、高频命令汇总容器操作镜像操作网络仓库七、总结前言验证HelloWorld、容器全生命周期管理、镜像增删构建、端口映射与容器互联、Docker Hub镜像仓库全套实操内容。一、Docker HelloWorld验证容器运行底层流程1. 最简输出示例dockerrun ubuntu:15.10 /bin/echoHello world参数完整拆解dockerDocker客户端执行程序run创建并启动容器核心指令ubuntu:15.10指定镜像名称标签本地无则自动从Docker Hub拉取/bin/echo Hello world容器内执行的前台命令执行完毕容器直接销毁。执行逻辑客户端发送请求→Docker守护进程检查本地镜像→无则拉取→基于镜像创建容器→运行指定输出命令→输出后容器退出。2. 交互式容器进入终端调试dockerrun-i-tubuntu:15.10 /bin/bash-t分配伪终端提供命令行交互界面-i保持标准输入开启持续接收键盘输入进入后可执行ls、cat /proc/version查看容器系统信息输入exit或快捷键CtrlD退出终端容器同步停止。3. 后台常驻容器服务标准运行方式dockerrun-dubuntu:15.10 /bin/sh-cwhile true; do echo hello world; sleep 1; done-d后台守护进程运行返回唯一长字符串容器ID查看后台容器输出日志docker logs 容器ID/容器名称查看当前运行容器docker ps停止后台容器docker stop 容器ID/容器名称。4. 容器7种状态created已创建未启动、restarting重启中、running运行中、removing删除迁移、paused暂停、exited正常停止、dead异常崩溃。二、容器全生命周期操作2.1 基础核心概念区分镜像Image静态只读模板存储系统、依赖、代码容器Container镜像动态运行实例拥有独立进程、文件系统类比镜像类容器实例对象。2.2 容器启动多方式一次性交互式调试用dockerrun-it--nameubuntu-test ubuntu /bin/bash--name自定义容器名称替代随机命名方便管理。后台常驻服务生产标准dockerrun-itd--nameweb-demo nginx启动已停止容器dockerstart 容器ID/名称# 重启运行中容器dockerrestart 容器ID/名称2.3 进入运行中容器两种方案重点区分docker attachdockerattach ubuntu-test缺点执行exit退出终端会直接关闭容器仅临时调试使用。docker exec生产推荐dockerexec-itubuntu-test /bin/bash优势退出终端不会停止容器线上服务排查日志、操作文件首选。2.4 容器查看、日志、资源监控# 仅查看运行容器dockerps# 查看所有容器含已停止dockerps-a# 查看容器实时输出日志-f持续打印dockerlogs-f容器名# 查看容器内部进程dockertop容器名# 查看容器完整JSON配置信息IP、挂载、端口、环境变量dockerinspect 容器名# 实时查看CPU/内存/磁盘资源占用dockerstats2.5 容器导入导出、删除清理导出容器快照为本地tar包dockerexportubuntu-testubuntu.tar从快照文件导入新镜像catubuntu.tar|dockerimport- test/ubuntu:v1删除容器运行中需加-f强制# 删除已停止容器dockerrm容器ID# 强制删除运行容器dockerrm-f容器ID# 一键清理所有停止状态容器dockercontainer prune2.6 Web服务容器实战端口映射基础# -P 随机映射容器所有暴露端口dockerrun-d-Ptraining/webapp python app.py# -p 指定固定端口映射 宿主机端口:容器端口dockerrun-d-p5000:5000 training/webapp# 查看容器端口对应关系dockerport 容器名三、Docker镜像完整管理操作3.1 查看本地镜像列表dockerimages字段说明REPOSITORY镜像仓库名称TAG版本标签默认latest代表最新IMAGE ID镜像唯一IDCREATION镜像构建时间SIZE镜像占用磁盘大小。使用规则镜像名:标签唯一标识镜像仅写镜像名默认拉取latest。3.2 搜索、拉取远程镜像在线搜索Docker Hub镜像dockersearch httpd返回字段NAME镜像名、DESCRIPTION描述、STARS收藏量、OFFICIAL是否官方镜像。2. 拉取指定版本镜像# 拉取最新ubuntudockerpull ubuntu# 拉取指定18.04版本dockerpull ubuntu:18.043.3 删除本地镜像# 通过名称删除dockerr hello-world# 通过镜像ID删除dockerrmi 镜像ID注意镜像被容器占用时无法直接删除需先删除对应容器。3.4 两种自定义镜像构建方式方式1基于运行容器提交镜像临时修改启动容器并修改内部环境如apt更新、安装软件exit退出容器commit提交生成新镜像dockercommit-m系统更新-a作者名容器ID 自定义镜像名:v2参数-m提交备注-a标注作者。方式2Dockerfile标准化构建生产主流新建Dockerfile文本示例模板FROM centos:6.7 MAINTAINER test testshturl. RUN echo root:123456 | chpasswd EXPOSE 80 CMD /usr/sbin/sshd -D当前目录构建镜像dockerbuild-trunoob/centos:6.7.-t指定镜像名称标签.代表Dockerfile所在目录。3.5 镜像重命名打tagdockertag 镜像ID 新镜像仓库名:版本同一镜像ID可绑定多个不同标签用于推送私有仓库。四、Docker容器网络端口映射与容器互联4.1 端口映射两种参数详解-P大写自动将容器EXPOSE声明端口随机映射宿主机高位端口32768起-p小写精准自定义端口支持多种格式# 绑定本机所有网卡 宿主机5000容器5000dockerrun-d-p5000:5000 webapp# 仅绑定本地回环地址外部无法访问dockerrun-d-p127.0.0.1:5001:5000 webapp# 指定UDP协议端口dockerrun-d-p5000:5000/udp webapp4.2 自定义网桥实现容器互通默认bridge网桥仅支持IP互访自定义网桥支持容器名称DNS解析推荐多服务使用创建自定义bridge网络dockernetwork create-dbridge test-net两个容器挂载同一网络dockerrun-itd--nametest1--networktest-net ubuntudockerrun-itd--nametest2--networktest-net进入容器ping对方容器名可直接连通无需IP4.3 全局/单容器DNS配置全局DNS所有容器生效修改daemon.json{dns:[114.114.114.114,8.8.8.8]}修改后执行systemctl daemon-reload systemctl restart docker重启引擎。2. 启动容器单独指定DNS、主机名dockerrun-it--rm-hmyhost--dns114.114.114 ubuntu--rm容器退出自动销毁适合临时测试。五、Docker仓库Docker Hub镜像管理5.1 仓库基础概念Registry镜像仓库服务Docker Hub/HarborRepository单个镜像仓库如ubuntu、nginxTag镜像版本标签。5.2 账号登录/登出# 登录Docker Hub输入用户名密码dockerlogin# 退出登录dockerlogout5.3 完整镜像推送流程搜索并拉取基础镜像dockersearch ubuntudockerpull ubuntu:18.04打标签匹配个人仓库用户名dockertag ubuntu:18.04 你的用户名/ubuntu:18.04推送至远程Docker Hubdockerpush 你的用户名/ubuntu:18.04推送后可在个人Docker Hub仓库查看共享镜像其他设备可直接拉取使用。六、高频命令汇总容器操作dockerrun[-it/-d/-p/--name]镜像# 创建启动容器dockerps/dockerps-a# 查看容器dockerstart/stop/restart 容器# 启停重启dockerexec-it容器 /bin/bash# 进入容器dockerrm[-f]容器# 删除容器dockerlogs-f容器# 实时日志dockerstats# 资源监控dockerexport/dockerimport# 容器快照导入导出镜像操作dockerimages# 本地镜像列表dockersearch 关键词# Hub搜索镜像dockerpull 镜像:tag# 拉取镜像dockerrmi 镜像ID/名称# 删除镜像dockercommit# 容器提交镜像dockerbuild-t名称.# Dockerfile构建dockertag# 镜像重打标签网络仓库dockernetwork create bridge名称# 自定义网桥dockerport 容器# 查看端口映射dockerlogin /logout# 仓库登录登出dockerpush 镜像标签# 推送镜像七、总结后台服务进入容器优先使用docker exec不要用attach避免误退出停服务线上生产禁止使用-P随机端口统一-p固定映射便于运维多服务交互必须创建自定义bridge网络支持容器名DNS解析推送镜像前必须使用docker tag添加账号前缀否则推送失败国内环境务必配置镜像加速器解决Docker Hub拉取超时清理磁盘定期执行docker container prune、docker image prune删除无用资源。