前提准备
1 - 关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
2 - 启动或重启docker
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker
3 - 查看是否存在别的容器,存在的话删掉
docker ps
Redis
加载镜像
端口:7000
docker run -d --name redis7000 --restart=always \
-p 7000:6379 redis
端口:7001
docker run -d --name redis7001 --restart=always \
-p 7001:6379 redis
端口:7002
docker run -d --name redis7002 --restart=always \
-p 7002:6379 redis
启动容器
docker exec -it redis7000 redis-cli
docker exec -it redis7001 redis-cli
docker exec -it redis7002 redis-cli
创建项目
- 创建一个maven项目工程
- 引入 jedis 依赖
- 创建测试类
- 写入redis代码
- 执行100个 key和value
依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
public class Test1 {
public static void main(String[] args) {
List<JedisShardInfo> list = new ArrayList<>();
list.add(new JedisShardInfo("192.168.64.150", 7000));
list.add(new JedisShardInfo("192.168.64.150", 7001));
list.add(new JedisShardInfo("192.168.64.150", 7002));
JedisPoolConfig config = new JedisPoolConfig();
ShardedJedisPool pool = new ShardedJedisPool(config,list);
ShardedJedis j = pool.getResource();
for (int i = 0; i < 100; i++) {
j.set("key"+i, "value"+i);
}
pool.close();
}
}
在redis客户端测试
docker exec -it redis7000 redis-cli
keys *
测试完了就删除redis
docker rm -f redis7000 redis7001 redis7002
mysql
虚拟网路
docker network create dockernet --subnet=172.18.0.0/24
docker network ls
数据库
1 - 数据卷
# 创建数据卷
docker volume create mysql-data
# 查看数据卷
docker volume ls
2 - 启动mysql容器
docker run -d --restart=always \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
--net dockernet \
--ip 172.18.0.11 \
--name mysql \
mariadb
- –restart=always —— 宿机启动的时候 一起启动
- -v —— 挂载目录
- -e —— 环境变量
- -p —— 端口映射
- –net —— 虚拟网路
- –ip —— 手动设置固定ip
- –name —— 名字
3 - 数据库工具来测试
新建数据库
4 - 测试目录挂载
容器
本地
成功
WEB+Mysql
本此只有讲容器与容器之间的互联
首先需要测试的项目
修改项目中的数据库链接池
链接池的地址跟 数据库的容器的ip一致
上传项目
在 opt/mall目录中上传
启动容器
docker run -d --restart=always \
-v /opt/mall:/usr/tomcat/webapps \
-p 80:8080 \
--net dockernet \
--ip 172.18.0.12 \
--name web \
tomcat:7
- -restart=always —— 宿机启动时一起启动
- -v —— 挂载目录
- -p —— 端口映射
- –net —— 设置虚拟网段
- – ip —— 设置ip
- –name —— 容器名字
- tomcat:7 启动tomcat7镜像以及容器
测试
数据已显示
Eureka
我们的eureka要两部分
- jdk的镜像
- eureka的镜像
JDK的构建
需要JDK1.8的 压缩包
1 - 准备文件夹
mkdir ~/jdk
cd ~/jdk
上传 jdk 压缩文件到 /root/jdk/ 目录
2 - Dockerfile
创建Dockerfile
vim Dockerfile
复制下面的内容
FROM centos:7
ADD jdk-8u212-linux-x64.tar.gz /opt/
ENV JAVA_HOME=/opt/jdk1.8.0_212 \
PATH=/opt/jdk1.8.0_212/bin:$PATH
ENTRYPOINT bash
- FROM —— 导入centos7 的镜像
- ADD —— 添加以及复制 jdk的 压缩包(自己包含压缩)
- ENV —— 环境变量配置
- ENTRYPOINT —— 执行命令 bash
3 - 构建jdk的镜像
docker build -t jdk:8 .
查看
docker images
Eureka的构建
需要Eureka的Jar 文件
- 从网上下载
- 自己打包jar文件
1 - 准备文件夹
mkdir ~/eureka
cd ~/eureka
上传 eureka 的jar文件到 /root/eureka 目录
2- Dockerfile
创建 Dockerfile
vim Dockerfile
复制下面内容
FROM jdk:8
COPY sp05-eureka-0.0.1-SNAPSHOT.jar /opt/
ENTRYPOINT ["java", "-jar", "/opt/sp05-eureka-0.0.1-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=eureka1", "--server.port=2001"]
- FROM —— 创建jdk的镜像
- COPY —— 复制eureka的jar 文件
- ENTRYPOINT —— 执行命令
- CMD —— 执行参数
3 - 构建eureka的镜像
docker build -t eureka:v1 .
docker images
启动 Eureka 容器
eureka的启动参数
docker run -d --name eureka1 \
-p 2001:2001 \
eureka:v1