Docker案例

關閉防火牆

# 關閉防火牆
systemctl stop firewalld.service
# 禁止防火牆開機啓動
systemctl disable firewalld.service

啓動或重啓docker

# 啓動docker
systemctl start docker
# 重啓docker
systemctl restart docker

redis

加載鏡像

docker load < redis-docker-image.gz

啓動容器

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

jedis 連接測試

新建測試項目

新建項目

pom.xml

添加 redis 和 junit 依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.tedu</groupId>
  <artifactId>docker</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <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>
</project>

編寫測試類

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();
	}
}

在容器中查看數據

# 進入容器
docker exec -it redis7000 bash

# 運行redis客戶端工具
redis-cli
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> get key1
"value1"

啓動多個 redis 容器

啓動三個redis容器,將端口分別映射到7000,7001和7002端口

# 如果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

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();
	}

在容器中查看數據

分別進入三個redis容器,執行 keys *查看結果

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

容器互聯

創建docker虛擬網絡

docker network create --subnet=172.18.0.0/24 dockernet

ifconfig

mysql

加載 mariadb 鏡像

docker load < mariadb-docker-image.gz

創建數據卷

docker volume create mysql-data

啓動 mariadb 容器,並掛載數據卷

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

docker ps -a

docker inspect mysql

進入容器,登錄mysql測試

docker exec -it mysql bash

mysql -uroot -p

連接數據庫,導入數據

數據庫

數據庫

選擇 資料/docker/EasyMall/easymall.sql

tomcat

加載 tomcat 鏡像

docker load < tomcat7-docker-image.gz

docker image ls

啓動 tomcat 容器

docker run -d --name tomcat --net dockernet --ip 172.18.0.12 -v /opt/webapps:/usr/tomcat/webapps -p 8080:8080 tomcat:7

訪問測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章