1 Docker是什么
Docker是一个新型的虚拟机技术,容器化引擎,专门用来快速搭建软件平台的技术。
基于Go语言开发的
可以实现容器的隔离,互不影响
2 Docker的特点
1.更高效的利用系统资源
2.更快速的启动时间
3.一致的运行环境
4.持续交付和部署(CI&CD)
3 Docker核心
镜像( Image ) 软件安装包,是一套软件集合,需要的其他的软件都在里面,比如Tomcat镜像,就包含Jdk+tomcat
容器( Container )基于镜像安装之后的实例
数据卷(Data Volumes)容器存储数据的地方,类似磁盘(虚拟的)
网络(Network)可以实现容器的网络分配,每个容器都有自己的网络(ip+端口)
仓库( Repository )存储镜像的地方,国内建议使用第三方镜像仓库
4 Linux安装Docker
1.下载 Docker引擎
curl -sSL https://get.daocloud.io/docker | sh
ps:之前安装过,需要先卸载,在重新安装
1.查看安装的docker文件
yum list installed |grep docker
2.删除本机的docker文件
yum -y remove docker-engine-xxx
3.删除repo文件
cd /etc/yum.repos.d 删除所有docker开头的文件
2.验证是否安装成功
3.启动测试
启动Docker容器
systemctl start docker
停止
systemctl stop docker
重启
systemctl restart docker
状态
systemctl status docker
5.Docker常用命令
1.查看镜像文件列表
docker images
TAG:版本号,如果未指定就是:latest
2.搜索镜像
docker search 镜像名
eg:docker search tomcat
3.下载镜像
docker pull 镜像名称:版本号
4.查看运行的容器
5.查看安装的容器
查询运行的容器:docker ps
查询安装的容器:docker ps -a
6.查看容器详情
docker inspect 容器名称|容器ID
7.查看容器日志
docker logs 容器名称|容器ID
8.进入容器内部
docker exec -it 容器名称|容器ID bash
9.停止容器
docker stop 容器名称|容器ID
10.启动容器
docker start 容器名称|容器ID
11.删除容器
必须是停止的容器才能删除
docker rm 容器名称|容器ID
12.删除镜像
docker rm 镜像名称:版本号
13.创建并运行容器
docker run -d —name 容器名称 -p 外界端口:软件端口 -v 外部路径:虚拟路径 镜像名称:版本号
如果对应的镜像不存在,就会先下载镜像,再创建容器,最后启动容器
14.查看docker所占磁盘
15.删除Docker所占的磁盘空间
只删除停止的容器和没有版本的镜像
docker system prune
删除所有的停止的容器和镜像
docker system prune -a
5.1. 基于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.33
没有镜像,会自动下载镜像,再安装
查看是否安装成功
docker ps
3.开放端口
开放的是8081,云服务器的安全组上
4.访问测试
http://39.105.189.141:8081/
5.2 基于Docker安装Mysql
1.创建并运行容器
docker run -d —name mysql3307 -e MYSQL_ROOT_PASSWORD=zzjava -p 3307:3306 mysql:5.7
docker ps
2.开放端口
开放3307端口
3.访问测试
VMWare中centos的ip 192.168.71.128
mysql密码是zzjava
在Windows中用navicat
5.3基于Docker安装Redis
1.创建映射文件夹实现配置文件
mkdir -p /docker/redis/redis6380
上传(拷贝)redis.conf配置文件
redis.conf配置文件下载:http://download.redis.io/redis-stable/redis.conf
2.创建并运行容器
docker run -d —name redis6380 -p 6380:6379 -v /docker/redis/redis6380/redis.conf:/etc/redis/redis.conf redis:6.2.1 redis-server /etc/redis/redis.conf
docker ps
3.开放端口
开放端口6380
4.访问测试
在windows中的redis工具访问连接
6. Docker-Compose
是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们就可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
6.1Docker-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.授权
sudo chmod +x /usr/local/bin/docker-compose
3.软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.测试
docker-compose -version
6.2 基于Docker-Compose 实现Tomcat的创建
4.3 基于Docker-Compose 实现Tomcat的创建
1.实现dockerfile文件的编写
vim /usr/local/tomcat.yml
内容如下:严格安装格式要求
version: "3.1"
services:
tomcat: #服务名称,不是容器名,只是在文件中方便观看是按个服务
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 #挂载数据卷
2.执行文件创建容器
docker-compose -f /usr/local/tomcat.yml up -d
3.验证
docker ps
6.3 Mysql的安装
1.创建文件夹
mkdir -p /var/lib/mysql
mkdir -p /etc/mysql
mkdir -p /var/log/mysql
2.创建Mysql的yml文件
version: '3.1'
services:
mysql:
container_name: "mysql3308"
network_mode: "host"
environment:
MYSQL_ROOT_PASSWORD: "123456"
image: "mysql:5.7"
restart: always
ports:
- 3308:3306
volumes:
- "/var/lib/mysql:/home/ubuntu/docker/mysql/db"
- "/etc/mysql:/home/ubuntu/docker/mysql/conf"
- "/var/log/mysql:/home/ubuntu/docker/mysql/log"
3.执行命令
docker-compose -f /usr/local/mysql.yml up -d
4.开放端口
3308
6.4 Redis的安装
1.创建文件夹
mkdir -p /data/rabbitmq-compose/redis/data
上传redis.conf到 /data/rabbitmq-compose/redis
2.编写redis.yml文件
version: '3.1'
services:
redis:
image: redis:6.2.1
container_name: redis6381
restart: always
ports:
- 6381:6379
networks:
- mynetwork
volumes:
- /data/rabbitmq-compose/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
- /data/rabbitmq-compose/redis/data:/data:rw
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "
networks:
mynetwork:
external: true
3.执行命令
docker-compose -f /usr/local/redis.yml up -d
4.开放端口
6381
5.运行测试
6.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:management
ports: #端口映射
- "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=123456
rabbit02:
image: rabbitmq:management
ports:
- "5673:5672"
- "15673:15672"
hostname: "rabbit02"
links: #关联主节点的hostname,方便容器内互相访问
- rabbit01
volumes:
- /data/rabbitmq-compose/rabbitmq2/log:/var/log/rabbitmq
environment:
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.测试