Docker的安装与配置和基础使用教程[toc]## 1. 安装docker本人是windows安装docker但是docker要在linux环境下使用所以我们必须要模拟一个linux环境这里我们使用wsl因为wsl比较轻量如果是linux可以直接安装1. 按下win键打开菜单搜索启用或关闭Windows功能2. 打开该选项重启电脑3. 安装wsl4. 右键开始菜单打开Powershell或者按住winR输入powershell5. 输入命令wsl --update --web-download6. 安装Docker Desktop可以和我一样在微软商店下载也可以在官网下载安装直接默认下一步即可7. 按住winr输入cmd打开之后输入docker --version如果正确输出版本号就结束了## 2. Docker常见命令1. docker需要修改一下配置文件否则在国内无法直接下载镜像~~~docker //复制下面的配置然后删除原文粘贴即可 { “registry-mirrors”: [ “https://docker.1ms.run”, “https://docker.m.daocloud.io”, “https://docker.xuanyuan.me” ] } ~~~2.docker pull xxxxdocker pull 代表下载镜像后面是具体的镜像名第一个是docker.io是docker仓库的注册表地址这是官方仓库可以省略地址library是命名空间这里是官方的命名空间也可以省略不写同时如果要是个人上传自己的镜像到仓库规定要添加自己的命名空间否则镜像的名字都一样难以管理latest是镜像的版本号如果不写就是默认获取最新的版本号所以上面的例子最后可以化简为docker pull nginx表示从官方仓库的官方命名空间下载nginx的最新版本的镜像如果想要搜索一些镜像可以直接去docker hub网站免登陆即可使用3.docker images可以获取下载过的镜像方便管理如果不使用镜像可以及时删除避免占用存储4.docker rmi imageIDrm是removei是imageimageID改为你想要删除的镜像ID我们看上面的那个截图可以看到每一个镜像都有一个ID我们可以通过这些ID更方便的管理镜像5.docker rm 容器ID这是删除容器如果我们要删除运行的容器还要在rm加上 -f 强制删除才行6.docker run nginx使用nginx镜像创建并运行容器其实也可以省略上面的docker pull命令因为当我们run的时候如果发现没有这个镜像会自动拉取7.docker ps查看正在运行的容器后面再加-a就可以查看所有的容器无论是否运行8.docker run -d nginx加一个 -d 可以在后台运行不会阻塞当前的窗口9.docker run -p xx:xx nginx其中xx是端口号前面是宿主机的端口后面是docker的端口这一步操作是把宿主机的端口和docker的端口绑定否则无法外部访问10.docker run -d -p 80:80 -v /D:desktop/nginx/html nginx挂载卷作用是把宿主机/D:desktop/nginx/html可替换文件夹和docker的文件夹绑定一方修改另外一方也会修改当docker的容器被删除的时候数据会保留在宿主机的文件夹内实现了数据持久化11.docker run -e-e可以用来传递环境变量 比如我们创建一个数据库肯定要传入用户名和密码我们就可以这样 ~docker docker run -d -p 13306:13306 \ -e MYSQL_USERNAMEroot \ -e MYSQL_PASSWORD1234 \ MYSQL ~12.docker run - -name my_nginx nginx这样是给容器起一个独一无二的名字在宿主机上不能重复。这样的话就可以用起的名字来操作容器比如rm不需要容器ID方便记忆13.docker run -it - -rm alpine-it 是指可以进入容器内进行交互- -rm是容器停止之后直接删除一般用来临时调试容器14.docker run -d - -restart alwaysunless-stopped nginxrestart指的是重启always是一直意思就是容器一停止就重启unless-stopped也是停止就重启但是当手动停止之后就不会重启15.docker start(stop)docker start(stop)后面写容器的ID或者名字就可以关闭或者开启容器docker run是使用镜像制作一个容器一直docker run就会产生很多的容器而start和stop就是在原有容器操作的命令下面的例子就可以看出来了16.docker inspect aa8806e32fe0我们在使用一段时间之后可能会忘记容器在启动的时候执行了哪些操作有没有挂载卷映射的端口在哪里我们就可以执行这个操作然后这个操作会返回一大串数据我们直接丢给AI让AI分析一下就行17.docker create -p 80:80 nginxcreate和run都会创建容器但是不会直接运行容器手动执行start命令就可以直接运行18.docker logs 容器ID -f不加-f 也可以查看日志加上-f 就是滚动查看日志可以看到加上-f 之后光标还在这里闪动日志会实时更新19.docker top 容器ID可以在宿主机直接查看容器内部进行的进程如果我们容器内部的linux环境是精简版既有可能没有下载一些软件包如果已经下载了软件包也可以直接运行docker exec aa8806e32fe0 ps -ef20.docker exec -it xxxx容器ID /bin/sh进入容器内部获得交互式的吗命令行环境很多容器内部都是一个精简的linux操作系统没有软件包所以我们如果遇到一些无法执行的命令就得下载一些软件包## 3. Dockerfile~dockerfileFROM python:3.13-slim //这里的意思是建立一个基础的镜像我的代码是python的所以我在python的基础上建立上面写的slim是一个linux系统内置了3.13pythonWORKDIR /app //这里的其实类似于cd后面所有的操作都在这个目录下执行如果不存在/app目录就自动创建COPY . . //第一个点代表是当前宿主机的目录第二个点代表镜像内的目录RUN pip install -r requirement.txt //安装依赖RUN表示要在镜像里面执行EXPOSE 8000 //这里的意思是声明镜像运行的端口是在8000端口主要是为了给别人使用镜像的时候提醒实际使用的时候还是以-p为准这里不写也不会影响程序运行但是在-p xx:xx里面右边的xx必须写和程序实际监听的端口一致CMD [“python3”,“main.py”] //CMD 是容器使用的时候的默认启动命令也就是容器一启动就会执行这个命令命令最好写成数组的形式中间不写空格//ENTRYPOINT[“python3”,“main.py”]这个和CMD 差不多但是优先级更高不容易被覆盖~写好Dockerfile之后就可以开始构建镜像1. 在当前目录执行docker build -t docker_test(这里是镜像的名字,后面还可以选择加一个:写版本号) .(最后写一个点表示在当前目录)2.docker run-d -p 8000:8000 docker_test这样就用我们自己构建的镜像做了一个容器并且运行起来了## 4. 推送镜像到Docker hub1.到Docker hun注册自己的账号2.docker login在cmd输入docker login登录一下先输入自己的用户名然后按住CTRL点击链接把这个复制之后输入到前面终端的password后面即可等待出现Login Successed即可3.docker build -t your_name这里输入你的用户名/docker_test现在我们使用Dockerfile重新构建一个镜像因为在推送镜像的时候必须要写上自己的用户名4.docker push your_name这里输入你的用户名/docker_testpush后面是镜像的名字5. 推送成功之后就可以在docker hub上面搜索用户名/镜像名字 来查询## 5. Docker网络docker网络有两种模式一种是bridge一种是host我们在一般使用的时候使用bridge比较常见这种就需要做端口映射docker内部的网络与宿主机的网路是不同的得通过桥接的方式通信。另外一种host形式可以不需要端口映射docker的网络直接使用宿主机的网络这种方式可以解决很多时候出现的网络问题。在容器内部可以建立子网子网的开头一般都是172.18在同一个子网之下的容器不需要知道容器的ip地址可以直接通过容器名互相通信不同的子网则不能互相通信### compose如果一个服务需要启动很多的服务比如前端程序后端程序数据库那么很显然我们不能将所有的程序都构建在同一个容器之下这样很容易出现一个服务崩了其他的服务也跟着遭殃的情况。所以我们很自然的想到可以通过每一个服务就是一个容器的方式实现多容器编排来管理一整个项目但是手动的去一个指令一个指令的操作容器十分繁琐所以我们通过编写docker-compose.yml文件可以很好的管理多容器。左边是手动的去管理多个容器右边就是使用docker-compose.yml文件管理多容器## 转载声明上述部分截图出自这里原作者为B站UP主“技术爬爬虾”
企业数字化 ERP 产品动态
相关推荐
金融服务领域内容创作的安全边界与合规前提 我无法根据当前输入生成符合要求的博文。原因如下:项目标题为"financial-services",这是一个宽泛的行业领域术语,而非具体可操作、可拆解的项目或技术主题;项目正文为空;关键词为空;摘要描述为空… · 2026/9/26 7:23:44
无人机飞行约束下的模型预测控制:从Matlab仿真到实现解析 做无人机控制的人应该都有过这种经历:飞机在空旷场地怎么飞都稳,一进狭窄走廊、机库门、或者贴着建筑物巡检,就开始“犯浑”。我最早是用PID来调室内悬停的,悬停本身没毛病,结果让它穿过门框时,飞机直接朝着… · 2026/9/26 7:23:44
PO、VO、BO、DTO、DAO、POJO区别详解:Java后端数据分层设计实践 做后端开发这些年,几乎每一个新入职的同事都会问我同一个问题:PO、VO、BO、DTO、DAO、POJO这几个东西到底有什么区别?刚开始我还耐心地从三层架构讲起,讲完之后对方往往更迷糊了,因为市面上很多资料把概念和实际用法混… · 2026/9/26 7:23:44
Windows 下 OpenClaw 接入飞书机器人:部署避坑与并发调优实战 老实说,把 OpenClaw 和飞书打通这件事,我在 Windows 上整整折腾了一个周末。如果你也在搜 Windows 部署 OpenClaw、飞书机器人、AI 助手这类关键词,那这篇记录应该能帮你省下至少一个通宵。我尽量不说废话,把每一步踩过的坑、查过… · 2026/9/26 7:58:19
压图别再开PS了:Squoosh与Caesium让图片压缩三秒高效搞定 回想一下你第一次打开Photoshop是为了什么?我猜超过一半的人会回答:把图片变小。我自己也是这样,大学那会儿要传作业到课程平台,单张图片不能超过2MB,花了一晚上学会人生第一个"PS技能"——图像大小调整&… · 2026/9/26 7:58:19
测试工程师KPI怎么定?一套可落地的指标体系与绩效复盘指南 干测试这一行,聊到KPI几乎人人都有话说。有人觉得测出来的bug越多功劳越大,有人觉得自己天天忙得要死最后绩效却一般,还有人被“线上出故障一票否决”压得喘不过气。我在测试行业待了十多年,从一线测试做到测试负责人,… · 2026/9/26 7:58:19
TensorSharp 支持 Jev 模式了:一次去噪,直接读出决策 目录
先说 Jev 是什么
TensorSharp 里是怎么落地的
怎么调
HTTP
原生 .NET
接口能干什么
为什么快 4–5 倍
哪些事它明确不做
相关链接 2026年9月22日 vLLM 合并了 PR #57250,给 DiffusionGemma 加了一种 Jev 风格的结构化读取模式。我们跟得很快ÿ… · 2026/9/26 7:58:13
2026梦幻防红系统源码解析:抖音圆码跳转拦截与域名轮换实战 简介:这是一套面向社群运营、私域推广及小程序开发者的防红跳转系统源码,针对链接易被平台拦截、域名频繁被封的痛点,提供多域名池智能切换方案,官方宣称防拦截率可达99%以上。资源包共152个文件,约21.72MB,… · 2026/9/26 7:58:13
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46