Docker案例(redis/mariadb)

Docker案例(redis-mariadb)

前提准备

关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service

启动或重启docker

# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker

1. Redis使用

1.1 加载镜像

docker load < redis-docker-image.gz

1.2 启动容器

docker run -d --name redis7000 -p 7000:6379 redis

1.3 新建测试项目(maven)

添加pom.xml文件--添加jedis 和junit测试依赖

<dependencies>
  	<dependency>
  		<groupId>redis.clients</groupId>
  		<artifactId>jedis</artifactId>
  		<version>2.9.0</version>
  	</dependency>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.12</version>
  	</dependency>
  </dependencies>

1.4 编写测试类

测试单台redis服务器

package docker;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class Test1 {
	@Test
	public void test1() {
		Jedis j = new Jedis("192.168.64.150", 7000);
		j.set("key1", "value1");
		
		String v = j.get("key1");
		System.out.println(v);
		
		j.close();
	}
}

1.5 在容器中查看数据

# 进入容器
docker exec -it redis7000 bash

# 运行redis客户端工具
redis-cli
# 查询数据
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> get key1
"value1"

2. 测试Redis分片

2.1 启动多个Redis

启动三个redis容器,将端口分别映射到7000,7001和7002端口

只需要修改端口以及name的值即可

# 如果7000已经启动,不必重复启动
docker run -d --name redis7000 -p 7000:6379 redis

docker run -d --name redis7001 -p 7001:6379 redis
docker run -d --name redis7002 -p 7002:6379 redis

# 查看容器
docker ps -a
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
756f5227dd64        redis               "docker-entrypoint.s…"   6 seconds ago       Up 4 seconds        0.0.0.0:7001->6379/tcp   redis7001
bc87e35664c8        redis               "docker-entrypoint.s…"   13 seconds ago      Up 11 seconds       0.0.0.0:7002->6379/tcp   redis7002
c3700e3e4c73        redis               "docker-entrypoint.s…"   2 hours ago         Up 2 hours          0.0.0.0:7000->6379/tcp   redis7000

2.2 jedis 分片测试

编写测试方法

	@Test
	public void test2() {
		JedisPoolConfig cfg = new JedisPoolConfig();
		cfg.setMaxTotal(500);
		cfg.setMaxIdle(20);
		
		List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
		shards.add(new JedisShardInfo("192.168.64.150", 7000));
		shards.add(new JedisShardInfo("192.168.64.150", 7001));
		shards.add(new JedisShardInfo("192.168.64.150", 7002));
		
		ShardedJedisPool pool = new ShardedJedisPool(cfg, shards);
		
		ShardedJedis j = pool.getResource();
		for (int i = 0; i < 100; i++) {
			j.set("key"+i, "value"+i);
		}
		
		pool.close();
	}

2.3 在容器中查看数据

分别进入三个redis容器,执行 keys *查看结果

docker exec -it redis7000 redis-cli
docker exec -it redis7001 redis-cli
docker exec -it redis7002 redis-cli

3. dockernet-容器互联

# 删除原先创建的虚拟网络(如果有), my-net为虚拟网络名
docker network rm my-net

# 创建新的虚拟网络
docker network create --subnet=172.18.0.0/24 dockernet 

4. mysql使用

4.1 加载 mariadb 镜像

docker load < mariadb-docker-image.gz

4.2 创建数据卷

docker volume create mysql-data

4.3 启动 mariadb 容器,并挂载数据卷

docker run -d --rm --name mysql \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
--net dockernet \
--ip 172.18.0.11 \
mariadb

4.4 进入容器,登录mysql测试

docker exec -it mysql bash

mysql -uroot -p

4.4 查看启动状态

docker ps -a
docker inspect mysql

进入容器,登录mysql测试

# 进入容器
docker exec -it myql bash
# 登录MySQL
mysql -u root -p 
root

连接数据库工具,导入数据

5. tomcat使用

5.1 加载 tomcat 镜像

# 我是加载的本地的, 如果本地没有 可使用 docker pull tomcat 进行下载
docker load < tomcat7-docker-image.gz

docker image ls
# 或者
docker images
posted @ 2020-09-15 16:00  zpk-aaron  阅读(209)  评论(0编辑  收藏  举报