Docker 从入门到实战:容器、镜像构建与私有仓库部署全指南

发布时间:2026/10/27 18:23:37

Docker 从入门到实战:容器、镜像构建与私有仓库部署全指南 docker容器初始配置vim /etc/hostscd /etc/yum.repos.dwget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install -y docker-cesystemctl enable --now dockerdocker infoyum install -y bridage-utilsecho net.bridge.bridge-nf-call-iptables 1 /etc/sysctl.d/docker.confecho net.bridge.bridge-nf-call-ip6tables 1 /etc/sysctl.d/docker.confecho net.ipv4.ip_forward 1 /etc/sysctl.d/docker.confsysctl --systemsystemctl restart dockerdocker info拉取镜像docker search docker.1ms.run/yakexi007docker pull docker.1ms.run/yakexi007/game2048docker imagesdocker tag docker.1ms.run/yakexi007/game2048:latest game2048:latestdocker rmi docker.1ms.run/yakexi007/game2048docker history game2048:latestdocker run -d --name demo -p 80:80 game2048docker psdocker基础命令docker search docker.1ms.run/busyboxdocker pull docker.1ms.run/busyboxdocker pull docker.1ms.run/nginxdocker imagesdocker tag docker.1ms.run/busybox:latest busybox:latestdocker tag docker.1ms.run/nginx:latest nginx:latestdocker rmi docker.1ms.run/nginxdocker rmi docker.1ms.run/busyboxdocker run -it busyboxlstouch file1exit 注意快捷键ctrlpq将docker退到后台docker ps -adocker rm (-f)docker run -it (-it交互式-d打入后台--name test busyboxexitdocker start testdockers logs testdocker exec -it test bash注意此时直接进入容器cat busybox.confdocker attach testdocker rm test针对模块Tab键补齐容器docker container镜像image数据卷volume网络networkswarm集群swarmsearch pull pushdocker镜像[rootdocker1 ~]# docker history nginx:latest清理环境[rootdocker1 ~]# docker rm -f docker ps -qa[rootdocker1 ~]# docker ps -a[rootdocker1 ~]# docker run -it --name demo busybox/ # touch file1 file2 file3容器放到后台[rootdocker1 ~]# docker ps -aos.sql拷贝[rootdocker1 ~]# docker cp os.sql demo:/[rootdocker1 ~]# docker attach demo/ # ls容器直接退出[rootdocker1 ~]# docker ps把当前容器的运行状态保存成一个新本地镜像容器不管是运行还是停止状态都可以 commit[rootdocker1 ~]# docker commit -m add os.sql demo demo:v1[rootdocker1 ~]# docker images demo:v1分层结构[rootdocker1 ~]# docker history demo:v1[rootdocker1 ~]# docker history busybox:latestDockerfile 构建镜像[rootdocker1 ~]# mkdir docker/[rootdocker1 ~]# cp os.sql docker/[rootdocker1 ~]# cd docker/[rootdocker1 docker]# vim DockerfileFROM busyboxRUN touch file1 file2 file3COPY os.sql /[rootdocker1 docker]# docker build -t demo:v2 .[rootdocker1 docker]# docker images[rootdocker1 docker]# docker history demo:v2传递参数CMD参数覆盖可以进去查看信息[rootdocker1 docker]# docker history nginx[rootdocker1 docker]# docker run -it --name test nginx bashroot64c93244b8bb:/# lsexec格式[rootdocker1 docker]# vim DockerfileFROM busyboxENTRYPOINT [/bin/echo,hello]CMD [world][rootdocker1 docker]# docker build -t demo:v3 .[rootdocker1 docker]# docker run --rm demo:v3hlelo world[rootdocker1 docker]# docker run --rm demo:v3 linuxhello linuxshell格式底层调用/bin/sh -c执行命令解析变量[rootdocker1 docker]# vim DockerfileFROM busyboxENV name worldENTRYPOINT echo hello,$name[rootdocker1 docker]# docker build -t demo:v4 .[rootdocker1 docker]# docker run --rm demo:v4hello,world回收[rootdocker1 docker]# docker ps -a[rootdocker1 docker]# docker images demo[rootdocker1 docker]# docker rmi e6b92cb00cda 3c72bce2f7ba 38becec41bfa 7d5af8c224ee应用容器化[rootdocker1 docker]# wget https://nginx.org/download/nginx-1.30.4.tar.gz[rootdocker1 docker]# lsnginx-1.30.0.tar.gz[rootdocker1 docker]# docker pull docker.1ms.run/centos:7 慢速找代理或者centos7.tar[rootdocker1 docker]# docker load -i centos7.tar[rootdocker1 docker]# docker images[rootdocker1 docker]# rm -f centos7.tar拷贝源[rootdocker1 docker]# cp //etc/yum.repos.d/CentOS-Base.repo ~/docker/编写Dockfile[rootdocker1 docker]# docker history nginx:latest 仿照官方流程[rootdocker1 docker]# vim DockerfileFROM centos:7RUN rm -f /etc/yum.repos.d/*.repoCOPY CentOS-Base.repo /etc/yum.repos.d/RUN yum install -y gcc make pcre-devel openssl-develADD nginx-1.30.4.tar.gz /mnt/ #ADD具有压缩功能WORKDIR /mnt/nginx-1.30.4RUN sed -i s/CFLAGS$CFLAGS -g/#CFLAGS$CFLAGS -g/g auto/cc/gccRUN ./configure --with-http_ssl_module --with-http_stub_status_moduleRUN makeRUN make installEXPOSE 80CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;][rootdocker1 docker]# docker build -t webserver:v1 . 重复构建存在缓存[rootdocker1 docker]# docker run -d --name web1 webserver:v1[rootdocker1 docker]# docker ps -a[rootdocker1 docker]# docker inspect web1[rootdocker1 docker]# curl 172.17.0.2web1日志查看[rootdocker1 docker]# docker exec -it web1 bash[root3bbb0f737dc6 nginx-1.30.4]# cd /usr/local/nginx/logs[root3bbb0f737dc6 logs]# lsaccess.log error.log nginx.pid[root3bbb0f737dc6 logs]# exit镜像优化[rootdocker1 docker]# docker cp web1:/usr/local/nginx/conf/nginx.conf /root/docker/[rootdocker1 docker]# vim nginx.conferror_log /dev/stderr notice;log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for;access_log /dev/stdout main;重新构建webserver2镜像使配置生效解决日志问题缩小层数[rootdocker1 docker]# vim DockerfileCentOS-Base.repo源可以只保留第一个FROM centos:7RUN rm -f /etc/yum.repos.d/*.repoCOPY CentOS-Base.repo /etc/yum.repos.d/ADD nginx-1.30.4.tar.gz /mnt/RUN yum install -y gcc make pcre-devel openssl-devel cd /mnt/nginx-1.30.4 sed -i s/CFLAGS$CFLAGS -g/#CFLAGS$CFLAGS -g/g auto/cc/gcc ./configure --with-http_ssl_module --with-http_stub_status_module make make install cd .. rm -fr nginx-1.30.4 yum clean allCOPY nginx.conf /usr/local/nginx/conf/EXPOSE 80CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;][rootdocker1 docker]# docker images[rootdocker1 docker]# docker run -d --name web1 webserver:v2[rootdocker1 docker]# docker logs web1[rootdocker1 docker]# curl 172.17.0.2[rootdocker1 docker]# docker logs web1回收[rootdocker1 docker]# docker rm -f web1多阶段构建优化[rootdocker1 docker]# vim DockerfileFROM centos:7 as buildRUN rm -f /etc/yum.repos.d/*.repoCOPY CentOS-Base.repo /etc/yum.repos.d/ADD nginx-1.30.4.tar.gz /mnt/RUN yum install -y gcc make pcre-devel openssl-devel cd /mnt/nginx-1.30.4 sed -i s/CFLAGS$CFLAGS -g/#CFLAGS$CFLAGS -g/g auto/cc/gcc ./configure --with-http_ssl_module --with-http_stub_status_module make make install cd .. rm -fr nginx-1.30.4 yum clean allCOPY nginx.conf /usr/local/nginx/conf/FROE centos:7COPY --frombuild /usr/local/nginx /usr/local/nginxEXPOSE 80CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;][rootdocker1 docker]# docker build -t webserver:v3 .[rootdocker1 docker]# docker images[rootdocker1 docker]# docker run -d --name web1 webserver:v3二进制动态库[rootdocker1 docker]# docker exec -it web1 bash[root2eb73e6cb2ae /]# ldd /usr/local/nginx/sbin/nginx[root2eb73e6cb2ae /]# cd /[root2eb73e6cb2ae /]# lllrwxrwxrwx 1 root root 9 Nov 13 2020 lib64 - usr/lib64精简镜像base-debian12[rootdocker1 docker]# cd[rootdocker1 ~]# lsanaconda-ks.cfg base-debian12.tar docker os.sql[rootdocker1 ~]# docker load -i base-debian12.tar[rootdocker1 ~]# cd docker[rootdocker1 docker]# mkdir new[rootdocker1 docker]# cd new[rootdocker1 docker]# docker pull docker.1ms.run/nginx 复制官方FROM nginx:latest as baseRUN mkdir -p /opt/var/cache/nginx \cp -a --parents /usr/lib/nginx /opt \cp -a --parents /usr/share/nginx /opt \cp -a --parents /var/log/nginx /opt \cp -aL --parents /var/run /opt \cp -a --parents /etc/nginx /opt \cp -a --parents /etc/passwd /opt \cp -a --parents /etc/group /opt \cp -a --parents /usr/sbin/nginx /opt \cp -a --parents /usr/sbin/nginx-debug /opt \cp -a --parents /lib/x86_64-linux-gnu/ld-* /opt \cp -a --parents /usr/lib/x86_64-linux-gnu/libpcre* /opt \cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt \cp -a --parents /lib/x86_64-linux-gnu/libc* /opt \cp -a --parents /lib/x86_64-linux-gnu/libdl* /opt \cp -a --parents /lib/x86_64-linux-gnu/libpthread* /opt \cp -a --parents /lib/x86_64-linux-gnu/libcrypt* /opt \cp -a --parents /lib/x86_64-linux-gnu/libzstd* /opt \cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt \cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /optFROMgcr.io/distroless/base-debian12:latestCOPY --frombase /optEXPOSE 80 443ENTRYPOINT [nginx, -g, daemon off;][rootdocker1 new]# docker build -t webserver:v4[rootdocker1 new]# docker images webserver[rootdocker1 new]# docker run -d --name web1 webserver:v4回收容器[rootdocker1 new]# docker rm -f $(docker ps -aq)Docker仓库registry私有仓库[rootdocker1 new]# docker pull docker.1ms.run/registry[rootdocker1 new]#docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry[rootdocker1 new]#docker ps -l配置仓库自启动[rootdocker1 new]#vim /etc/systemd/system/registry.service[Unit]DescriptionRegistryRequiresdocker.serviceAfterdocker.service[Service]TypesimpleRestartalwaysExecStart/usr/bin/docker start -a registryExecStop/usr/bin/docker stop registry[Install]WantedBymulti-user.target[rootdocker1 new]#systemctl daemon-reload[rootdocker1 new]#docker stop registry[rootdocker1 new]#systemctl enable --now registry[rootdocker1 new]#docker ps -l[rootdocker1 new]#docker tag busybox:latest localhost:5000/busybox:latest[rootdocker1 new]#docker push localhost:5000/busybox[rootdocker1 new]#curl http://localhost:5000/v2/_catalog {repositories:[busybox]}[rootdocker1 new]#curl http://localhost:5000/v2/busybox/tags/list {name:busybox,tags:[latest]}[rootdocker1 new]#docker pull localhost:5000/busybox
延伸阅读

更多相关文章

2026/10/28 4:50:41

Python 爬虫实战:软件插件市场高级检索采集 ——版本兼容筛选、无限滚动与详情页异步加载的完整实现

㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐⭐⭐⭐☆(高级) 🉐福利: 一次订阅后,专栏内的所有文章可永久免费看,持续更新中,保底1000+(篇)硬核实战内容。 全文目录: 🌟 开…

2026/10/25 8:38:02

卸煤线四车无线通讯系统成功投运案例分享,一文看懂

火力发电厂的卸煤作业采用翻车机卸车系统,标准作业流程为:重车推入→夹紧定位→翻转卸煤→空车回正→推出空车,整个过程由DCS集中控制。核心设备包括重车调车机、翻车机、迁车台及推车机四台大型设备,四台设备均在轨道上移动运行&…

2026/10/28 4:47:57

技能不是知道而是稳定做到:一套完整的技能养成与盘点体系

总听人把“skills”挂在嘴边,简历上写“沟通能力强、熟悉Office三件套、会Python基础”,可真遇到实际任务的时候,往往发现那些写在纸上的技能根本撑不住场面。我在过去几年里带过团队、也做过自由职业,见过太多人陷在“学了一堆东…

2026/10/28 4:47:57

ECC椭圆曲线密码学原理与全栈实践指南

1. ECC到底是什么?别被缩写骗了,它不是“企业云中心”也不是“加密货币钱包”ECC这个词在最近的开发者热搜里反复刷屏,但很多人点进去才发现——自己根本没搞清它指什么。有人以为是SAP里的ECC系统(Enterprise Central Component&…

2026/10/28 4:47:57

JAR文件双击打不开的根源与修复指南

1. 为什么双击JAR文件会“消失”——这不是Bug,是系统在认真执行你的指令你把一个写着“点我运行”的JAR文件拖到桌面,满怀期待地双击——结果什么都没发生:没有窗口弹出,没有错误提示,甚至没看到任务栏闪烁一下&#…

2026/10/28 4:47:57

AI摄像头技术解析:从人形检测到智能家居联动

1. 项目概述:当家用摄像头遇上AI会发生什么?去年帮父母家安装小米摄像头时,我发现传统监控存在三个痛点:误报频繁(树叶晃动也报警)、被动查看(必须人工盯着屏幕)、事件回溯困难&…

2026/10/28 4:47:57

YOLOv8环境搭建与目标检测实战教程

1. 项目概述YOLOv8作为当前最先进的实时目标检测算法之一,在工业质检、安防监控、自动驾驶等领域有着广泛应用。本教程将完整演示从零开始搭建YOLOv8开发环境的全流程,包括服务器配置、数据准备、模型训练、性能优化到最终部署的全套解决方案。特别说明&…

2026/10/28 4:42:57

8MP车载摄像头:像素密度、识别距离与上车工程账

1. 从一颗像素说起:8MP进车为什么成了分水岭两年前跟一位做感知算法的朋友聊方案,他给整车厂报的是2MP(19201080)摄像头模组,理由很朴素:算力吃得消、链路成熟、成本可控。今年再聊,同一批人拿出…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/28 0:02:13

Python股票自动交易系统源码解析:从行情获取到风控的完整链路

简介:这份资源是面向高校计算机、金融相关专业毕业设计场景的完整项目源码包,主题为基于Python的股票自动交易系统,适合需要完成毕设选题、课程设计或自学金融量化交易开发的学生与开发者参考。压缩包共收录687个文件,整体约14.93…

2026/10/28 0:02:13

视酷酷信IM源码部署指南:Java 17+MySQL 8.0.33实战配置

简介:这是一套2024年亲测可部署的视酷酷信IM即时通讯系统源码,面向具备Java、OC、C#及Vue开发能力的技术人员,解决私有化即时通讯平台快速搭建与二次定制需求,尤其适用于需集成商城、保障数据主权的中小型企业或独立开发者。资源共…

2026/10/28 0:02:13

Python爬取百度迁徙数据:接口解析、批量采集与避坑指南

简介:这份资源是一个用Python爬取百度迁徙数据的脚本压缩包,面向具备Python基础、希望入门网络爬虫与数据解析的开发者,解决按日期获取全国热门城市人口迁徙数据的问题。包内共1个文件,为单个py脚本,压缩包约1KB&#…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑