手机端网站建设的费用清单商业网站建设公司
- 作者: 五速梦信息网
- 时间: 2026年03月21日 08:43
当前位置: 首页 > news >正文
手机端网站建设的费用清单,商业网站建设公司,广州网站建设好评公司,网站无法访问的原因目录 1. Docker的理解1.1 Docker三要素 2 安装Docker2.1 安装命令2.2 配置阿里云加速器 3 Docker命令3.1 启动类命令3.2 镜像类命令 4 实战4.1 启动容器#xff0c;自动创建实例4.2 查看Docker内启动的容器4.3 退出容器4.4 其他4.5 导入导出文件4.6 commit 5 Dockerfile5.1 理… 目录 1. Docker的理解1.1 Docker三要素 2 安装Docker2.1 安装命令2.2 配置阿里云加速器 3 Docker命令3.1 启动类命令3.2 镜像类命令 4 实战4.1 启动容器自动创建实例4.2 查看Docker内启动的容器4.3 退出容器4.4 其他4.5 导入导出文件4.6 commit 5 Dockerfile5.1 理解Dockerfile5.2 制作镜像5.2 虚悬镜像 6 Compose6.1 下载Compose6.2 docker-compose.yaml文件示例6.3 使用compose 基础概念补充1 挂载 Volume2 网络 network2.1. Docker容器之间如何通信的2.2 想看看Docker各个容器的网络信息2.3 如何分配给容器Ip2.4 bridge模式2.5 自定义网络名2.6 host 网络类型 3 网关 1. Docker的理解
为什么要使用Docker 在开发项目的过程中开发人员一套环境软件代码JDK版本Redis版本数据库版本等环境测试人员一套环境运维人员一套环境。 开发人员自己可以运行程序仅将源代码打包发给测试人员测试人员需要按照要求配置出同样的运行环境非常容易出现某处配置错误无法启动项目的情况。如使用了集群不仅配置起来繁琐工程量也大维护更难。所以希望可以改善这种情况。 于是出现Docker开发人员将 开发环境源代码全部打包发送测试人员在Docker上简单部署其实就是将文件上传到Docker就可以启动项目了不需要像之前那样还得按照要求搭建运行环境。
什么是Docker
对比VMware我们需要一个本地服务器自己的电脑安装VM在VM上安装centOS(一个或者多个)在centOS上安装软件。需要清楚的是centOS本质上是一个Linux操作系统的镜像也就是打包了Linxu一整套操作系统所以比较大。因此安装几个centOS电脑资源就不够用了。而且每次创建centOS都得花费个3-5min是比较慢的我自己有时还得看教程安装Docker引擎本质上就是将Linux操作系统的核心打包并不是打包一整套操作系统。所以做到了轻量化之前一台服务器安装一个VM在VM上部署10台centOS现在一台服务器安装一个Docker可以部署100台容器。所以看到Docker对比VM就能理解了。只不过我们把VMware的centOS叫做虚拟机也就是Docker的容器。创建不同的虚拟机实现隔离。也就是创建不同的容器实现隔离
1.1 Docker三要素 镜像 将程序源代码生产环境打包制作成一个镜像文件如跨境电商管理系统的镜像文件 容器实例 根据镜像文件创建运行实例一个容器运行一种服务 仓库 存放镜像的地方需要把镜像发布到仓库再到仓库拉取下来。
Docker公司提供的库Docker Hub阿里提供的仓库阿里云公司自己建立的库
2 安装Docker
2.1 安装命令
yum -y install gcc
yum -y install gcc-c
yum install -y yum-utils
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version
docker run hello-world
2.2 配置阿里云加速器
- mkdir -p /ect/docker
- cd /ect/docker/
- tee /ect/docker/daemon.json -EOF{registry-mirrors: [https://aa25jngu.mirror.aliyun.com]}EOF
- systemctl daemon-reload
- systemctl restart docker
- docker run hello-world3 Docker命令 3.1 启动类命令 stystemctl start docker 启动 stystemctl stop docker 关闭 stystemctl status docker 查看状态3.2 镜像类命令 查看镜像
- docker imagesrepository 仓库存放下载的镜像Tag 标签例如mysql 5.6 版本Tag就是5.6不设置版本号默认是latest表示最新版本Image Id 唯一标识 根据镜像名称去查询仓库中的镜像查询redis镜像未指定版本号
- docker search redis将查询结果限制展示5条 docker search –limit 5 redis下载镜像查询redis镜像未指定版本号,默认下载最新版
- docker pull redis查询redis镜像指定版本号 docker pull redis:6.0.8查看docker资源使用情况
- docker system df查看操作系统的资源使用情况
删除镜像指定名字 - docker rmi hello-world删除镜像指定镜像的唯一标识 docker rmi 对应的Image Id删除镜像强制删除 docker rmi -f hello-world 删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG删除全部 docker rmi -f $(docker images -qa)4 实战 4.1 启动容器自动创建实例 在Docker容器中启动ubuntu 启动容器中ubuntu实例 docker run -it ubuntu /bin/bash-i 指交互式访问 -t :指tty即系统 it需要一起使用即告诉系统启动后不要立刻走而是停下来等待我进一步操作。并且是以bash的交互方式 /bin/bash以bash的方式此时就可以操作ubuntu内部信息比如查看ubuntu的文件啥的 4.2 查看Docker内启动的容器 container id容器实例Id 表示使用ubuntu镜像创建了 Id226a56fb739e 的容器实例因为未指定名称此时就随机分配了一个 现在再利用ubuntu镜像创建一个容器实例并且 指定名称 使用–name指定名称 bash 或者 /bin/bash 都可以 docker run -it –nameMy_Ubuntu02 ubuntu bash此时就根据ubuntu镜像创建了两个容器实例 此时若提问必须指定交互方式吗如果不写呢如这样docker run -it ubuntu 因为Docker机制的问题这样启动有时候会导致容器启动后紧接着直接关闭添加上交互方式就是让容器启动后并停留住。 这种方式叫做前台交互式启动 还有一种后台交互式启动docker run -d ubuntu 总结一下 前台交互式启动docker run -it ubuntu bash 后台交互式启动docker run -d ubuntu 4.3 退出容器
- exit
run 进去容器exit退出容器停止- ctrlpq
run进去容器ctrlpq退出容器不停止退出后如何再进去呢
第一种方式docker exec -it 容器实例ID 推荐 第二种方式docker attach -it 容器实例ID
区别 exec会在容器中打开新的终端并且启动新的进程用exit退出不会导致容器停止 attach直接进入容器终端不启动新的进程用exit退出会导致容器停止
4.4 其他
启动已经停止的容器 docker start 容器ID或者容器名重启容器 docker restart 容器ID或者容器名停止容器 docker stop 容器ID或者容器名强制停止容器 docker kill 容器ID或者容器名删除已停止的容器 docker rm 容器ID
4.5 导入导出文件
将容器实例中的文件导出在本地
docker cp 容器实例Id/路径/a.txt /主机路径将容器实例打包成压缩包A.tar
docker export 容器实例Id A.tar4.6 commit
例如我们使用ubuntu镜像创建了一个名为MyUbuntu01的实例这个实例只包含了linxu核心的命令我们现在实际业务需要修改内部的某个文件想使用vim命令。MyUbuntu01内部没有 所以我们需要给其添加功能 如何做呢先进入容器实例依次执行命令 apt-get update apt-get -y install vim 那我如果使用ubuntu镜像再创建一个名为MyUbuntu02的实例也需要vim命令岂不是还要添加一次功能。 这个时候我们可以根据实例MyUbuntu01反向生成一个新的镜像修改名称为new_ubuntu同时也可指定版本用于区分例如new_ubuntu:1.2)。这样根据new_ubuntu:1.2 创建的实例就都具有我们添加的vim功能了
docker commit -m提交的描述信息 -a作者 容器ID 要创作的目标镜像名:[TAG]
docker commit -mvim cmd add ok -azzyy fahf33rfaaa new_ubuntu:1.25 Dockerfile
5.1 理解Dockerfile
我们已经学会使用镜像去创建容器实例现在了解一下如何创建镜像 每个镜像背后都是由各自的Dockerfile制作的 因此学习一下DockerFile的语法规则
from 在每个Dockerfile的第一行表示当前镜像是基于哪个镜像进行变动的也可以指定自己 maintainer 镜像的作者表明此镜像是谁做的 run 这个run命令和docker run -it xxxx中的docker run不一样 docker run这个run是在创建并启动实例 dockerfile内部的run是在docker build时运行创建镜像 expose 暴露端口 Docker容器端口镜像实例暴露端口 比如为什么Tomcat可以用8080端口访问就是因为其镜像暴露的端口设置成了8080 workdir 修改进入容器后的落脚点实例展示默认的落脚点 如何修改 EVA MY_PATH /user/local WORKDIR \(MY_PATH 这样进去运行为镜像实例就会切换到/user/local路径下而不是默认落脚点 env 设置环境变量 copy copy 路径A 路径B A路径是本机资源路径B路径是镜像中的路径意思是将本地资源复制到镜像中指定的路径 copy --from镜像名:TAG 路径A 路径B 例如COPY --fromoms-middleware-gosu-alpine-amd64:latest /usr/local/bin/gosu /bin/ A路径是镜像中路径B路径也是镜像路径意思是将名为XX的镜像A路径下的资源复制到 生成镜像B路径下 add 表示将路径A的资源复制到路径B并且自动解压tar压缩包 volume 容器数据卷 cmd Dockerfile内不写cmd指令然后我们运行镜像实例时这样写的 docker run -it ubuntu /bin/bashDockerfile内会这么写 CMD [/bin/bashrun]然后我们运行镜像实例时这样写的 docker run -it ubuntu 实际上执行的命令是 docker run -it ubuntu /bin/bash Dockerfile内写多个CMD命令 CMD [/bin/bashrun] CMD [demo.shrun] ,然后我们运行镜像实例时这样写的 docker run -it ubuntu 实际上执行的命令是 docker run -it ubuntu demo.sh (可以看到最后一个cmd命令会覆盖前面的cmd命令) Dockerfile内写多个CMD命令 CMD [/bin/bashrun] ,然后我们运行镜像实例时这样写的 docker run -it ubuntu demo.sh实际上执行的命令是 docker run -it ubuntu demo.sh (可以看到最后一个dockerfile文件内的cmd直接失效) entrypoint 类似于CMD命令不会被覆盖 Dockerfile文件镜像 nginx:test FROM nginxENTRYPOINT {nginx,-c} # 定参CMD {/etc/nginx/nginx.conf} # 变参# Docker命令
docker run nginx:test# 实际上执行命令docker run nginx:test nginx -c /etc/nginx/nginx.conf# Docker命令
docker run nginx:test /etc/nginx/AAAA.conf# 实际上执行命令docker run nginx:test nginx -c /etc/nginx/AAAA.conf5.2 制作镜像
5.2 虚悬镜像
在构建镜像或者删除镜像时产生错误导致创建了一个仓库名和TAG都为 none 的镜像这种会有潜在的安全风险建议删除
查询所有的虚悬镜像
docker image ls -f danglingtrue删除所有的虚悬镜像
docker image purne6 Compose
6.1 下载Compose
搞一个新文件存放
curl -L https://github.com/docker/compose/releases/download/v2.11.1/docker-compose-\)(uname -s)-$(uname -m) -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-composedocker-compose –version
前面利用镜像创建镜像实例的时候需要执行 docker run -d 镜像名 考虑一个场景在一个大型项目中我们需要先启动mysql服务再启动redis集群有30个redis最后再启动注册中心consul最最后再启动项目代码。 会有什么问题呢
需要手动且按序 启动很多个容器数量多难记住顺序假如consul服务挂掉重新启动consul的容器后会变更新的网络地址无法保证容器之间的通信
使用Compose工具将如何启动的相关信息全部写在一个文件我们仅执行这个文件Docker会自动执行该文件内部的信息。此乃自动化部署。
所以Compose被称为自动化统一编排工具我们创建的文件名为docker-compose.yaml。可以看其实就是一个yaml文件。yaml有自己的语法规则学习springboot就知道了
6.2 docker-compose.yaml文件示例
看一个docker-compose.yaml文件示例
versdion:3.6servers: #表示有几个服务有MyUbuntu和MyZookeeper服务MyUbuntu: # 自定义命名不冲突就行iamg: ubuntu:3.2 # 模版镜像的名字container_name: mu01 # 生成镜像的名字ports:- 6001:6001 # 端口号volumes:- /app/MyUbuntu:/data # 挂载network:- atguigu_net # 设置网路depends_on: # 表明需要先启动redismysql再启动本服务- redis- mysqlMyZookeeper# 自定义命名不冲突就行……
networkatguigu_net # 设置网络
这个文件与我们执行此命令是一样的
docker run -d -p 6001:6001 -v /app/MyUbuntu:/data –network atguigu_net –name mu01 ubuntu:3.26.3 使用compose
编写docker-compose.yaml重点执行docker-compose up -d
基础概念补充
1 挂载 Volume
挂载是什么 主机上有A文件容器有B文件此时容器无法访问主机的A文件仅仅可访问自己的B文件 将主机的A文件挂载到容器上容器就可以访问主机的A文件也可以访问自己的B文件 为什么不直接将主机A文件放在容器中 例如容器大小是10Mb文件A是1Gb无法直接将文件A存放到容器内。 此时使用一个链接将主机的文件A 链接在容器上当容器需要访问文件A时就顺着链子获取A。这就是挂载 使用挂载还有什么好处 可以访问到主机的A文件也就代表可以操作主机上A文件可以保证数据持久化若是只保存在容器容器一重启就没了数据共享多个容器可以共享同一个挂载目录实现数据共享 怎么挂载呢 创建名为web的容器并将主机的/src/web目录挂载到容器的/opt/web目录下 docker run -d –name web -v /src/webapp:/opt/webapp 2 网络 network
2.1. Docker容器之间如何通信的 容器Aip–127.0.0.1 容器Bip–127.0.0.4 注在AB同一网关下 容器A通过ip连接 ping 127.0.0.4 √连接成功 2.2 想看看Docker各个容器的网络信息
选择一个镜像实例查看具体网络情况 查看网关 Getway 和 地址 IPAddress 再看看另外一个镜像实例的网络情况 可以看到每个容器中镜像实例都有一个IP和网关这个IP是怎么来的。其实不然是Docker内部分配的
2.3 如何分配给容器Ip
这就必须先了解Docker的网络模式 此图表示网络模式有三种bridge主要使用的host null
这个name是什么意思 选择一种网络模式后必须自定义一个名字 我们定义方案A为dirver类型以后谁想使用driver直接勾选方案A。很方便管理
2.4 bridge模式 若容器A选择桥接模式后docker会创建一个虚拟网桥docker0docker0会给容器随机发一个Ip和网关 我怎么知道有虚拟网桥的 输入ip addr查看主机上的通信情况
docker0我明白了这个东西的存在那下面两条红框是什么 当然不是容器直接一根线就链接到虚拟网桥而是有更多的细节在里面 当创建一个容器并且设置网络模式为bridge创建时默认为bridge时虚拟网桥会创建一个网卡给容器A自己留一个与之对应的接口。容器B容器C也是同样的。 当我们在主机上输入 ip addr时veth 就是我们的接口标识。 现在我们切换到容器视角看看网络信息 总结一下
查看所有是桥接模式的容器docker network inspect bridge 2.5 自定义网络名 回到最开始的问题docker容器之间如何通信 前面说了根据Ip进行连接那是不是容器A必须得知道容器B的Ip第一次我告诉容器A了10分钟后容器B挂掉了我重启了容器B这个时候容器B的IP就变成了新的AB无法通信除非A知道B最新的IP地址。 那这样岂不是特别麻烦有没有什么办法解决呢 既然容器IP是变动的容器名不会变动我们直接通过名字进行通信。 以前容器A需要知道容器B的IP ping 127.0.0.3 现在容器A只需要知道容器B名字 ping tomcat容器B名字 怎么做到呢 创建自定义网络 新建容器并指定使用该网络 docker run -d -p 8081:8081 –network diy_name –name t1 tomcat bash docker run -d -p 8081:8081 –network diy_name –name t1 ubuntu bashping一下 docker exec -it t1 bash 进入容器t1 ping t2 连接容器t2 2.6 host 网络类型 容器共享主机的IP不再分配容器单独的Ip。 3 网关 网关是什么 比如我们在浏览器输入www.baidu.com域名解析后会得到百度的IP地址。电脑的网卡会将IP发送给路由器的网关网关先转发到本地网络查是否有此IP地址若没有再转发到互联网去查此IP地址。 所以网关就是负责转发。
- 上一篇: 手机端网站建设步骤wordpress 二次开发
- 下一篇: 手机端网站排名开源建站系统cms
相关文章
-
手机端网站建设步骤wordpress 二次开发
手机端网站建设步骤wordpress 二次开发
- 技术栈
- 2026年03月21日
-
手机端网站的区别卓讯企业名录搜索软件
手机端网站的区别卓讯企业名录搜索软件
- 技术栈
- 2026年03月21日
-
手机端网站html好看的模板东莞市非凡网站建设
手机端网站html好看的模板东莞市非凡网站建设
- 技术栈
- 2026年03月21日
-
手机端网站排名开源建站系统cms
手机端网站排名开源建站系统cms
- 技术栈
- 2026年03月21日
-
手机端网站设计江苏网站建设代理商
手机端网站设计江苏网站建设代理商
- 技术栈
- 2026年03月21日
-
手机端网站思路中软国际软件培训
手机端网站思路中软国际软件培训
- 技术栈
- 2026年03月21日
