前言
本來第二章想說說一些基本操作的 后來覺得就是羅列出來一堆隨時能用--help看到的東西 有點單調(diào) 索性 直接上硬貨.
表示docker 的使用還是超簡單的
安裝篇
- 首先用docker搜索mysql的鏡像文件 一般情況下 下載和使用stars最多的就好了 肯定靠譜耗拓! copy下來準備下載景象的name 準備執(zhí)行下一步
~ docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 7234 [OK]
mariadb MariaDB is a community-developed fork of MyS… 2322 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 534 [OK]
# ....... 省略N多搜索結(jié)果
- 安裝直接執(zhí)行這個命令即可
~ sudo docker pull mysql
- 查看已經(jīng)安裝好的景象,如果看到如下界面的話 證明已經(jīng)安裝成功了
~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 7d83a47ab2d2 10 months ago 408MB
啟動篇
運行一個mysql容器
~ sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
上面命令各個參數(shù)的含義
run 運行一個容器
--name 后面是這個鏡像的名稱
-p 3306:3306 表示在這個容器中使用3306端口(第二個)映射到本機的端口號也為3306(第一個)
-d 表示使用守護進程運行待错,即服務(wù)掛在后臺
PS: 如果想停掉某個容器 使用Stop 命令即可
# 停止運行mySql容器
~ docker stop mysql
mysql
# 同理 想重新啟動的話只需要運行start即可
~ docker start mysql
mysql
使用篇
啟動完成之后熬荆,使用命令來查看鏡像
~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
263e45f1e128 mysql "docker-entrypoint.s…" 3 weeks ago Up 1 second 0.0.0.0:3306->3306/tcp mysql
如果有這個顯示就證明成功了
然后使用客戶端工具嘗試登錄就可以了,密碼如剛才所示為123456,127.0.0.1為這臺機器的ip, 3306為剛才所示的占用本物理機的端口(不是在docker內(nèi)部的端口)
Sequel Pro 登錄界面
雙開篇
開始放大招了 大家注意了 這里會講解一些機制和沖突
官方一下:使用docker相對于虛擬機而言的原因是耗費很少的資源晒奕,可以"開辟"非常多的隔離的環(huán)境煮寡,所以我們繼續(xù)運行第二個mysql實例妆毕,命名為mysql-two
~ docker run --name mysql-two -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
執(zhí)行即可~ 雙開也可以如此簡單 Docker確實是神器
只有正確的示例是不完美的 下面增加一些失敗情況
這里注意一下 名稱和端口一定不能重復(fù)否則會出現(xiàn)問題流强,如果名字沖突 那么會創(chuàng)建失敗痹届。如果端口沖突 那么容器依舊會創(chuàng)建 但是無法啟動。
下面的錯誤示例.
# 假如還用之前的鏡像名字為mysql打月。
~ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker: Error response from daemon: Conflict. The container name "/mysql" is already in use by container "263e45f1e1286393b5579e9a8b963fd2192fee3d3b835343679bbe82d177799a". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
# 假如名字修改了但還用之前的3306端口
~ docker run --name mysql-two -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
252c947bff290fb1bccd8662c8f1e9e3efed0aeb44fb680612ef4e4fb9283a00
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql-two (0a6f9310acea18d94beb47cd601959df2d7bc791f5ab422be0f408954a73e130): Bind for 0.0.0.0:3306 failed: port is already allocated.
如果不小心端口重復(fù)了队腐,但是又找不到容器這種尷尬的事情出現(xiàn)了 可以通過下面的方式解決
# 首先使用ps -a 命令查找到所有容器
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
252c947bff29 mysql "docker-entrypoint.s…" 12 seconds ago Created mysql-two
263e45f1e128 mysql "docker-entrypoint.s…" 3 weeks ago Up 22 minutes 0.0.0.0:3306->3306/tcp mysql
# Copy 出來NAMES 使用rm命令刪除
~ docker rm mysql-two
mysql-two
# 重新查看
~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
263e45f1e128 mysql "docker-entrypoint.s…" 3 weeks ago Up 22 minutes 0.0.0.0:3306->3306/tcp mysql
客戶端篇
如果沒有客戶端軟件的話 可以在本地下載MySql客戶端
~ sudo brew install mysql-client
下面使用mysql命令訪問服務(wù)器
mysql -h127.0.0.1 -P3306 -uroot -p123456
訪問的結(jié)果如下:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)