汉中专业网站建设公司有哪些商业网站
文章目录
- 应用的部署
 - MySql的部署
 - Tomcat的部署
 
- dockerfile
 - Docker原理
 - 镜像的制作
 - 容器转镜像
 - 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 \ > --name=c_mysql \ > -v $PWD/conf:/etc/mysql/conf.d \ > -v $PWD/logs:/logs \ > -v $PWD/data:/var/lib/mysql \ > -e MYSQL_ROOT_PASSWORD=123456 \ > 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_PASSWORD=123456: 初始化root用户密码
 
 -  
使用
正常的使用mysql
 -  
本地访问到docker中的mysql 数据库
sudo mysql -uroot -P 3307 -h 127.0.0.1 -p 
Tomcat的部署
和上述mysql部署类似
docker run -id --name=c_tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
 
dockerfile
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 ,进入后自动安装vim | 
| CMD | 容器启动命令 | CMD command param1 pararm2 用于设置部署容器实例是运行的默认命令 CMD /bin/bash | 
| ENTRYPOINT | 入口 | 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。 | 
| ADD | 添加文件 | ADD src dst 添加src 文件到dst路径下,同时还能 解压 | 
| ENV | 环境变量 | ENV== | 
| ARG | 构建参数 | |
| WORKDIR | 工作目录 | 进入容器的默认目录WORKDIR /usr | 
| EXPOSE | 端口 | 使容器内的应用可以通过端口和外界交互 EXPOSE 80  | 
| VOLUME | 挂载的目录 | 用于在容器中创建一个或者多个挂载点,这些点可以用来在容器和主机之间共享数据,volume命令只是在容器中创建一个挂载点,不会在镜像中包含任何数据,需要我们使用COPY,ADD命令将数据拷贝到镜像中 | 
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 << num1+num2;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 
服务编排
原理:
可能在一个应用中包含了若干个应用,如mysql,redis之类的
所以,可以按照一定的业务规则批量的管理容器
Docker Compose
Docker Compose是一个编排 多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止
- 利用Dockerfile定义运行环境镜像
 - 使用docker-compose.yml定义组成应用的各服务
 - 运行docker-compose up 启动应用
 
安装docker-compose
Docker 私有仓库
-  
拉取私有仓库镜像
docker pull registry -  
启动私有仓库容器
docker run -id --name=registry -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 
