发布时间:2026/9/1 20:03:14
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/9/1 20:03:14

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

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

2026/9/1 19:58:14

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

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

2026/9/1 20:13:15

Python爬虫与数据可视化实战:天气轮播图期末大作业完整案例

这次我们来看一个特别适合 Python 期末大作业的完整项目:用 Python 爬取天气数据,再把结果做成数据可视化图表,最后以「天气轮播图」的形式在网页上展示。项目本身不复杂,但覆盖了数据采集、数据清洗、数据存储、可视化、Web 展示…

2026/9/1 20:13:15

Python金融统计实战:Pandas数据处理与回归策略回测

港科大这套《Python金融统计:Pandas到回归策略完整课》,核心就是一条主线:用 Python 处理金融数据,再用统计模型做回归分析,最后把回归结果落到一个可回测的策略框架里。它不是单纯讲 Pandas API,也不是单独…

2026/9/1 20:13:15

Malody乱力进阶:用replay复盘把96.14变成稳定输出的起点

打完 Extra-4 的 Pure Ruby,屏幕上跳出 96.14 的时候,我做的第一件事不是立刻换下一张谱,而是先把 replay 保存下来。很多玩 Malody 乱力进阶的人到这个阶段都会有类似的体感:成绩已经过了 95,但回看过程时总觉得有一部…

2026/9/1 20:13:15

Malody乱力进阶:用回放复盘突破96%准确率瓶颈

在 Malody 的 Keypad 模式里,能打出 Extra-4 Pure Ruby 96.14 这样的成绩,基本已经过了乱打乱读的门槛。这个成绩后面跟着 replay 字样,意味着玩家录下了完整回放,可以用它确认失误点、检查手指动作、判断谱面难点。对刚进入乱力进…

2026/9/1 20:08:15

基于 LSM‑Tree(LSMT)本科毕业设计选题

选题分为 5 大类:LSM‑Tree 原理改进与性能优化、LSM‑Tree 存储引擎设计与实现、LSM‑Tree 结合数据库 / 键值系统、LSM‑Tree 与大数据、LSM‑Tree 工程应用与测试分析。适合计算机、软件工程、大数据专业本科毕设,难度梯度覆盖仿真实验、简易原型实现…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…