Docker概念:
是一个新型的虚拟机技术,容器化引擎,专门用来快速搭建软件平台的技术。<br /> 专门用来快速搭建软件的技术,目前企业中很流行<br /> 通过服务器来进行连接
Docker的工作原理:
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
Docker的优点:
Docker,在docker可以快速搭建软件,例如Tomcat,MySQL,Redis,RabbitMQ,在docker这个系统中搭建完,我直接可以使用,例如,搭建完tomcat我就可以直接 ip+port 去访问tomcat页面。
如果像平常搭建的话,首先要有jdk,然后需要先去网上下载Tomcat,安装Tomcat,然后去启动Tomcat,确认启动成功以后,最后才可以访问Tomcat页面。
Docker的好处:
**1.更高效的利用系统资源**<br />eg:一台物理机,docker可以搭建更多的mysql<br /> **2.更快速的启动时间**<br />只有网络 ip 磁盘等这些东西,相比传统虚拟机少了很多东西,传统虚拟机跟一个服务器没区别,什么都有。所以docker有跟快的启动时间<br /> **3.一致的运行环境**<br />就是运行环境一致,tomcat版本等所有软件都要一致。<br />有些时候版本都一致,还跑不了,应该打包打丢了。<br />解决:把war包,扔到tomcat的webapp里面跑一下试试。因为war包含了library(jar包),原本给了源码只有2,3Mb,但是打成war包有50,60Mb,因为打war包,war包里也打包了jar包<br /> **4.持续交付和部署(CI&CD)**<br />持续集成,持续交付。<br />eg:假如有1000台服务器,10000台服务器,难道要一个一个上传吗?<br />所以docker有CI&CD,持续集成,持续交付<br /> **5.容器(软件)之间具备隔离性**<br />容器/软件:tomcat mysql
Docker的核心概念:
1.**镜像**(image):**一堆软件的集合**,Docker中的镜像,会包含软件安装包本身,还有依赖的其他软件安装包<br /> 比如:Tomcat镜像=Tomcat软件的安装包+JDK安装包+JDK自动配置<br /> ISO:操作系统的镜像<br /> 2.容器(container):通过镜像安装之后的东西,软件<br /> 3.数据卷(Data Volumes):磁盘,虚拟的<br /> 4.网络(Network):网络,每个容器都有自己的ip和端口<br /> 5.仓库(Repository):存储 镜像(一堆软件包) 的地方。<br />仓库用的Git管理。在国外,用镜像加速器变成国内的。 <br />
2.Docker安装
centos系统<br /> 安装步骤:
1.下载Docker
curl -sSL [https://get.daocloud.io/docker](https://get.daocloud.io/docker) | sh<br />
2.验证是否安装成功
docker version<br />
3.操作Docker
启动服务<br /> systemctl start docker<br /> 停止服务<br /> systemctl stop docker<br /> 重启服务<br /> systemctl restart docker<br /> 查看服务状态<br /> systemctl status docker
注意:
docker的status为failed
解决办法:
Docker无法启动,报错:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
执行命令:
rm -rf /var/lib/docker/ 移除docker文件夹下的所有文件,以防冲突。
vim /etc/docker/daemon.json
# 添加如下内容 以下的添加内容 可以解决docker状态启动成功
{
“graph”: “/mnt/docker-data”,
“storage-driver”: “overlay”
}
重启服务:
systemctl restart docker
查看状态:
systemctl status docker
镜像:
Docker下载的镜像,默认是从国外服务器下载,慢,所以实际中配置镜像加速器<br /> 配置步骤:<br />阿里云的镜像加速器<br />先启动docker:systemctl start docker
1.新增docker配置
vim /etc/docker/daemon.json <br />进入以后,安i 进入编辑模式<br /> 输入以下内容:<br /> {<br /> "registry-mirrors": [<br /> "https://registry.docker-cn.com"]<br /> }
退出:
1、先按 Esc,然后到最低端。<br /> 2、然后在写冒号 : wq,然后 按回车。退出成功。
2.重新加载配置
systemctl daemon-reload
3.重启Docker服务
systemctl restart docker<br />
3.Docker命令
**docker images**:查看服务器的镜像文件<br /><br /> **docker search 镜像名称**:搜索仓库是否存在指定的镜像<br />安装镜像成功!!!**docker pull 镜像名称**:版本号:下载镜像,版本号可以省略,省略的话就是:latest<br />有点慢,因为它包含了jdk<br /><br /> **docker ps**:查看运行的容器<br /> **docker ps -a**:查看安装的所有容器<br /> **docker inspect 容器名称**:查看容器详情<br /> **docker logs 容器名称**:查看容器的运行日志<br /> **docker start 容器名称**:启动容器<br /> **docker restart 容器名称**:重新启动容器<br /> **docker stop 容器名称**:停止容器<br /> **docker run**:最常用的命令,创建并运行容器,如果对应镜像的不存在还会下载镜像<br /> **docker rm 容器名称**:删除容器,但是容器必须停止<br /> **docker rmi 镜像名称**:版本号:删除镜像<br /> **docker exec -it 容器名称 bash**:进入到容器内部,虚拟机<br /> **docker system df**:查看Docker所占磁盘<br /> <br />
4.Docker基于命令安装软件 CV
云服务器的安全组--就是防火墙,需要在这里配置开放的端口号
Docker安装Tomcat
安装步骤:
1.创建映射路径
mkdir -p /docker/tomcat/webapp8081
2.执行命令,创建Tomcat容器
docker run -d --name tomcat8081 -p 8081:8080 -v /docker/tomcat/webapp8081:/usr/local/tomcat/webapps/ tomcat:9.0.62
解释:
docker run:创建并运行容器
-d:后台运行,deamon
—name 容器名称:设置容器的名称,唯一
-p 外界访问端口:软件本身端口:设置端口映射,外界端口可以随意设置,但是需要开放端口(安全组)。软件本身端口,不能修改
-v 服务器真实路径:容器的默认路径:设置数据卷,设置真实路径的映射,只需操作外部路径就可以
tomcat:镜像名称,省略了版本号,如果镜像的版本为默认:latest,那么就可以省略
docker run -d —name 容器名称 -p 外界访问端口:软件本身端口 -v 真实路径:软件默认路径 镜像名称:版本号
作用:
1.镜像不存在,下载。如果存在直接使用
2.创建对应容器
3.启动容器
注意:需要开放端口号(外界访问端口)<br /><br /> 为什么可以通过url直接访问呢,因为它会直接映射到软件的真实路径中。
4.验证测试
**查看运行的容器:**<br />** docker ps **<br /> 查看容器日志:<br /> docker logs tomcat8081
注意:
测试tomcat出现的问题
1、网页显示连接失败。解决:把https 后面的s去掉
2、网页报404。解决:
#查看容器IDdocker ps#进入容器docker exec -i -t 1551ad299c94 /bin/bash#将webapps.dist中的文件复制粘贴到webapps下;#也可以删除webapps文件夹,重命名webapps.dist为webapps;cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps#退出容器exit
Docker安装Mysql
1.创建并启动容器
docker run -d --name mysql3307 -e MYSQL_ROOT_PASSWORD=zzjava -p 3307:3306 mysql:5.7<br /> 上面的密码是:zzjava<br /> 解释:也可以改密码:root。<br /> -e MYSQL_ROOT_PASSWORD=root的密码:设置数据库root账号的密码<br />
2.运行测试
数据库连接工具测试<br /> ip:60.205.147.4<br /> 端口号:3307<br /> 密码:root<br />用sqlyog测试一下:docker部署tomcat成功
5.Docker-Compose
docker-compose是基于docker的一个编排工具,使容器可以批量的、可视的执行。可以管理多个容器的一个工具。
是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们就可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
需要安装:
1.执行命令,安装Docker-Compose
sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
2.完成设置
授权<br /> sudo chmod +x /usr/local/bin/docker-compose<br /> 设置软链接<br /> sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
3.验证测试
docker-compose -version
基于Docker-Compose安装Tomcat
1.实现dockerfile文件的编写
vim /usr/local/tomcat.yml
内容如下:严格安装格式要求,格式、空格,必须一模一样,不能多不能少!!!
2.执行文件创建容器version: "3.1"services:tomcat1: #服务名称,不是容器名,只是在文件中方便观看是按个服务restart: always # 代表只要docker启动, 就会自动启动这个容器 相当于-restart参数image: tomcat:9.0.33 #依赖的镜像container_name: tomcat8082 # 容器名称 相当于 --name参数ports:- 8082:8080 #映射端口,可以指定多个,用多个-来写environment:TZ: Asia/Shanghai #指定时区volumes:- /docker/tomcat/webapp8082/:/usr/local/tomcat/webapps #挂载数据卷tomcat2: #服务名称,不是容器名,只是在文件中方便观看是按个服务restart: always # 代表只要docker启动, 就会自动启动这个容器 相当于-restart参数image: tomcat:9.0.33 #依赖的镜像container_name: tomcat8083 # 容器名称 相当于 --name参数ports:- 8083:8080 #映射端口,可以指定多个,用多个-来写environment:TZ: Asia/Shanghai #指定时区volumes:- /docker/tomcat/webapp8083/:/usr/local/tomcat/webapps #挂载数据卷
docker-compose -f /usr/local/tomcat.yml up -d
3.验证
docker ps
Mysql的安装
1.创建文件夹
2.创建Mysql的yml文件mkdir -p /var/lib/mysqlmkdir -p /etc/mysqlmkdir -p /var/log/mysql
3.执行命令version: '3.1'services:mysql:container_name: "mysql3308"network_mode: "host"environment:MYSQL_ROOT_PASSWORD: "123456"image: "mysql:5.7"restart: alwaysports:- 3308:3306volumes:- "/var/lib/mysql:/home/ubuntu/docker/mysql/db"- "/etc/mysql:/home/ubuntu/docker/mysql/conf"- "/var/log/mysql:/home/ubuntu/docker/mysql/log"
docker-compose -f /usr/local/mysql.yml up -d
4.开放端口
3308Redis的安装
1.创建文件夹
mkdir -p /data/docker-compose/redis/data
上传redis.conf到 /data/docker-compose/redis
2.编写redis.yml文件
3.执行命令version: '3.1'services:redis:image: redis:6.2.1container_name: redis6381restart: alwaysports:- 6381:6379networks:- mynetworkvolumes:- /data/docker-compose/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw- /data/docker-compose/redis/data:/data:rwcommand:/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "networks:mynetwork:external: true
docker-compose -f /usr/local/redis.yml up -d
4.开放端口
6381
5.运行测试
RabbitMQ的安装
1.创建文件夹
mkdir -p /data/rabbitmq-compose/rabbitmq1/log
mkdir -p /data/rabbitmq-compose/rabbitmq2/log
2.编写rabbitmq.yml文件
version: "3.1"services:rabbit01: #节点1主节点image: rabbitmq:managementports: #端口映射- "5672:5672"- "15672:15672"hostname: rabbit01 #这个要记住,后面加入集群的时候会用到volumes:- /data/rabbitmq-compose/rabbitmq1/log:/var/log/rabbitmq #挂载日志目录environment: #设置环境变量(配置文件参数),虚拟主机,用户名,密码- RABBITMQ_DEFAULT_VHOST=jenkin- RABBITMQ_DEFAULT_USER=jenkin- RABBITMQ_DEFAULT_PASS=123456rabbit02:image: rabbitmq:managementports:- "5673:5672"- "15673:15672"hostname: "rabbit02"links: #关联主节点的hostname,方便容器内互相访问- rabbit01volumes:- /data/rabbitmq-compose/rabbitmq2/log:/var/log/rabbitmqenvironment:RABBITMQ_DEFAULT_VHOST: "jenkin"RABBITMQ_DEFAULT_USER: "jenkin"RABBITMQ_DEFAULT_PASS: "123456"
3.执行命令
docker-compose -f /usr/local/rabbitmq.yml up -d
4.开放端口
5672、5673、15672、15673
5.测试
后面讲Nginx搭建Tomcat集群,再去使用Docker-Compose<br /> Docker创建容器,可以选择使用命令(docker run),也可以选择使用yml文件(docker-compose)<br />没讲完呢......<br />[https://www.yuque.com/feri/fwibdh/mhtgkv/#PB5Lf](https://www.yuque.com/feri/fwibdh/mhtgkv/#PB5Lf)
