ps:實驗環境是:CentOS Linux release 7.3 64位
1.獲取mysql鏡像
從docker hub的倉庫中拉取mysql鏡像
docker pull mysql
查看鏡像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql 5.7 b4e78b89bcf3 9 days ago 412.3 MB
2.運行一個mysql容器
運行一個mysql實例的命令以下:
docker run --name first-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
5b6bf6f629bfe46b4c8786b555d8db1947680138b2de1f268f310a15ced7247a
上述命令各個參數含義:
run 運行一個容器
--name 後面是這個鏡像的名稱
-p 3306:3306 表示在這個容器中使用3306端口(第二個)映射到本機的端口號也爲3306(第一個)
-d 表示使用守護進程運行,即服務掛在後臺
查看當前運行的容器狀態:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe41e155a6ca mysql "docker-entrypoint.sh" 46 minutes ago Up 46 minutes 0.0.0.0:3306->3306/tcp first-mysql
想要訪問docker的mysql數據庫,個人機器上須要裝一個mysql-client。
yum install mysql -y
下面咱們使用mysql命令訪問服務器,密碼如剛纔所示爲123456,192.168.1.20爲我這臺機器的ip, 3306爲剛纔所示的佔用本物理機的端口(不是在docker內部的端口)
mysql -h192.168.1.20 -P3306 -uroot -p123456
訪問的結果以下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
3.運行第二個mysql實例
docker run --name second-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
5404fb11f29cba07b991f34056d6b40ed0888aa905a45e637e396d071bd7f331
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5404fb11f29c mysql "docker-entrypoint.sh" 12 seconds ago Up 11 seconds 0.0.0.0:3307->3306/tcp second-mysql
5b6bf6f629bf mysql "docker-entrypoint.sh" 43 minutes ago Up 43 minutes 0.0.0.0:3306->3306/tcp first-mysql
如上所示,兩個實例都正常運行了,爲了訪問第二個容器,咱們指定端口3307登陸到這個mysql的client。
mysql -h192.168.1.20 -P3307 -uroot -p123456
訪問的結果以下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql