在docker上安裝運行mysql實例

發布時間:2017-03-08 06:06 來源:互聯網 當前欄目:web技術類

希望在自己的機器模擬一下公司中微服務的構建,使用docker部署了mysql實例,使用spring boot進行了CRUD(增刪改查)操作進行了一下驗證,在后面的學習中也可以嘗試更多的框架和組件。

ps:實驗環境是:ubuntu 14.04, 64位

1.獲取mysql鏡像

從docker hub的倉庫中拉取mysql鏡像

sudo docker pull mysql

查看鏡像

sudo docker imagesmysql latest 18f13d72f7f0 2 weeks ago 383.4 MB

2.運行一個mysql容器

運行一個mysql實例的命令如下:

復制代碼 代碼如下:sudo docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql

5b6bf6f629bfe46b4c8786b555d8db1947680138b2de1f268f310a15ced7247a

上述命令各個參數含義:

run            運行一個容器
--name         后面是這個鏡像的名稱
-p 3306:3306   表示在這個容器中使用3306端口(第二個)映射到本機的端口號也為3306(第一個)
-d             表示使用守護進程運行,即服務掛在后臺

查看當前運行的容器狀態:

復制代碼 代碼如下:sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5b6bf6f629bf

mysql "docker-entrypoint.sh" 32 hours ago Up 5 hours 0.0.0.0:3306->3306/tcp first-mysql

想要訪問mysql數據庫,我的機器上需要裝一個mysql-client。

sudo apt-get install mysql-client-core-5.6

下面我們使用mysql命令訪問服務器,密碼如剛才所示為123456,192.168.95.4為我這臺機器的ip, 3306為剛才所示的占用本物理機的端口(不是在docker內部的端口)

mysql -h192.168.95.4 -P3306 -uroot -p123456

訪問的結果如下:

mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)

3.運行第二個mysql實例

使用docker相對于虛擬機而言的原因是耗費很少的資源,可以"開辟"非常多的隔離的環境,所以我們繼續運行第二個mysql實例,還用之前的鏡像,名字為second-mysql。

復制代碼 代碼如下:sudo docker run --name second-mysql -p 3306:3307 -e MYSQL\_ROOT\_PASSWORD=123456 -d

mysql2de4ddb5bfb9b9434af8e72368631e7f4c3f83ee354157328049d7d0
f5523661docker: Error response from daemon: driver failed programming external connectivity on endpoint second-mysql (33aa29d891a1cb540de250bcbbbe9a0a41cd98f61a4e9f129a2ad5db69da4984): Bind for 0.0.0.0:3306 failed: port is already allocated.

為了驗證第一個是本機的端口號,就仍然使用了3306這個端口,那么創建如上所示,發生了錯誤,但是產生了一個容器id,當我們修改端口后還會報錯,因為名字沖突了,也即這次失敗的創建會占用這個名字:

復制代碼 代碼如下:sudo docker run --name second-mysql -p 3307:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d

mysqldocker: Error response from daemon: Conflict. The name "/second-mysql" is already in use by container 2de4ddb5bfb9b9434af8e72368631e7f4c3f83ee354157328049d7d0f5523661.

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、