经营网站的备案,百度搜索流量查询,手机app开发要多少钱,一键安装网站运行环境文章目录 应用的部署MySql的部署Tomcat的部署 dockerfileDocker原理镜像的制作容器转镜像Dockerfile 服务编排Docker Compose Docker 私有仓库 应用的部署
搜索app的镜像拉去app的镜像创建容器操作容器中的app
MySql的部署
容器内的网络服务和外部机器无法直接通信外部机器和… 文章目录 应用的部署MySql的部署Tomcat的部署 dockerfileDocker原理镜像的制作容器转镜像Dockerfile 服务编排Docker Compose Docker 私有仓库 应用的部署
搜索app的镜像拉去app的镜像创建容器操作容器中的app
MySql的部署
容器内的网络服务和外部机器无法直接通信外部机器和宿主机可以直接通信、宿主机和容器可以直接通信容器中的服务需要被外部访问时可以将 容器中提供服务的端口映射到宿主机的端口上外部访问宿主机的端口就能间接访问容器服务称为 端口映射 搜索mysql镜像 sudo docker search mysql拉取镜像 sudo docker pull mysql创建容器设置端口映射目录映射 mkdir mysql
cd mysql➜ mysql sudo docker run -id \ -p 3307:3306 \--namec_mysql \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD123456 \mysql 参数说明 -p 3307:3306将容器的3306端口映射到宿主机的3307端口-v $PWD/conf:/etc/mysql/conf.d 将主机当前目录下的 conf挂载到容器的 /etc/mysql/conf.d上,配置文件-v $PWD/logs:/logs 将当前主机目录下的logs挂载到容器的logs日志目录-e MYSQL_ROOT_PASSWORD123456: 初始化root用户密码 使用 正常的使用mysql 本地访问到docker中的mysql 数据库 sudo mysql -uroot -P 3307 -h 127.0.0.1 -pTomcat的部署
和上述mysql部署类似
docker run -id --namec_tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcatdockerfile
Docker原理 Docker 镜像本质是 一个分层的文件系统 Docker中的一个centos镜像为什么只有200mb而一个centos操作系统的iso文件要几个G centos的ios镜像文件包含了 rootfs和 bootfs而docker的centos镜像复用了操作系统的bootfs只有 rootfs和其他镜像层 docker中一个tomcat镜像为什么有500mb而一个tomcat安装包只有70mb docker中镜像是分层的,分层下载tomcat只有70多mb但是他还需要依赖父镜像和基础镜像所以对外暴露出tomcat镜像有500多
镜像的制作
dockerfile构建的过程
容器转镜像 容器转镜像 目录挂载的是不会写道commit镜像里面去 docker commit 容器id 镜像名称:版本号将镜像打包成压缩文件 docker save -o 压缩文件名称 镜像名称:版本号将压缩文件解压 docker load -i 压缩文件名称我们将自己的实现的应用转化成一个镜像,将其转化成一个压缩文件传给别人别人使用这个镜像生成对应的容器就能够在自己那边部署使用该应用了
Dockerfile
Dockerfile概念
Dockerfile是一个文本文件里面包含了一条条的指令每一条指令构建一层基于基础镜像最终构建出一个新的镜像可以给别人提供一个完全一致的开发环境
我们可以登陆hub.docker.com查看别人是怎么写dockerfile的
关键字作用备注FROM指定父镜像指定dockerfile是基于哪个 image构建的MAINTAINER作者信息表明谁写的RUN执行命令容器创建的过程中执行格式RUN command如RUN yum install-y vim ,进入后自动安装vimCMD容器启动命令CMD command param1 pararm2用于设置部署容器实例是运行的默认命令CMD /bin/bashENTRYPOINT入口配置容器启动后执行的命令并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个ENTRYPOINT当指定多个时只有最后一个起效。ADD添加文件ADD src dst添加src 文件到dst路径下同时还能 解压ENV环境变量ENVARG构建参数WORKDIR工作目录进入容器的默认目录WORKDIR /usrEXPOSE端口使容器内的应用可以通过端口和外界交互EXPOSE 80VOLUME挂载的目录用于在容器中创建一个或者多个挂载点这些点可以用来在容器和主机之间共享数据volume命令只是在容器中创建一个挂载点不会在镜像中包含任何数据需要我们使用COPYADD命令将数据拷贝到镜像中
docker build -f ./centos_file -t ccc:1 .-f:指定dockerfile的文件路径-t:指定镜像的名称和版本号 示例
mkdir docker
cd docker
vim test.cpp输入
#include iostream
using namespace std;int main()
{char op;float num1, num2;cout 输入运算符、-、*、/ : ;cin op;cout 输入两个数: ;cin num1 num2;switch(op){case :cout num1num2;break;case -:cout num1-num2;break;case *:cout num1*num2;break;case /:if (num2 0){cout error不能除以零;break;}else{cout num1 / num2;break;}default:// 如果运算符不是 , -, * 或 /, 提示错误信息cout Error! 请输入正确运算符。;break;}return 0;
}
vim my.dockerfile
//输入
FROM codenvy/cpp_gccRUN mkdir /home/user/myappADD test.cpp /home/user/myappWORKDIR /home/user/myappRUN g test.cpp -o testCMD [./test]
运行 docker build -f ./my.dockerfile -t my:1.0 .docker imagesdocker run -it my:1.0 /bin/bash
服务编排
原理 可能在一个应用中包含了若干个应用如mysqlredis之类的 所以可以按照一定的业务规则批量的管理容器 Docker Compose
Docker Compose是一个编排 多容器分布式部署的工具提供命令集管理容器化应用的完整开发周期包括服务构建启动和停止
利用Dockerfile定义运行环境镜像使用docker-compose.yml定义组成应用的各服务运行docker-compose up 启动应用
安装docker-compose
Docker 私有仓库 拉取私有仓库镜像 docker pull registry启动私有仓库容器 docker run -id --nameregistry -p 5000:5000 registry 打开浏览器输入 私有仓库ip:5000/v2/_catalog 可以看到 {repositories:[]} 表示私有仓库搭建成功 修改daemon.json sudo vim /etc/docker/daemon.json
//添加
insecure-registries:[私有服务器ip:5000]重启docker服务 systemctl restart docker
docker start registry将镜像上传到私有仓库 标记镜像为私有仓库的镜像 docker tag wxm:1.0 192.168.0.22:5000/wxm:1.0推送镜像到远程仓库 docker push 192.168.0.22:5000/wxm:1.0从私有仓库拉取镜像 docker pull 192.168.0.22:5000/wxm:1.0