接著上次,我們繼續入門docker:
容器相關命令
創建容器:(實際上是有dockercreate方法的,這樣就是創建一個容器,並不會運行,run相當於create+start,新版docker推薦使用run)
<code>docker run /<code>
但我們並不直接這樣使用,會跟著各種參數進行配合使用:
-i:表示創建並運行容器
-t:表示容器啟動後會進入其命令行。通常於-i一起使用:-it表示創建並運行容器,且運行之後自動進入為當前應用打開一個默認終端,這麼說比較蒼白,看圖吧:
由圖我們可以看到,相當於我們顯示地運行了一臺redis。
--name :為創建的容器命名。
-v:表示目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。(這個可能有些人不太理解,在這裡我先簡單說一下,運行在容器內的應用我們無法修改它的配置文件,即時我們能夠進入容器內部,也沒有可編輯的命令工具,因此我們需要用到目錄映射,把容器內的文件映射到宿主機上,這樣修改宿主機上的文件就間接修改而來容器內部的文件,這在實際開發中是很常用的)。
-d:在run後面加上-d參數,則會創建一個守護式容器在後臺運行,與-t相反。
-p:表示端口映射,前者是宿主機端口,後者是容器內的映射端口,程序訪問是通過宿主機映射端口來訪問容器的。可以使用多個-p做多個端口映射
(1)交互式的方式創建容器:
<code>docker run -it --name=容器名稱鏡像名稱:標籤 /bin/bash/<code>
效果如圖:(為了效果,我使用了相同的name和鏡像,docker是不能創建相同name的容器的,事實上我已經把上一個創建的容器刪除了)
可以看出不同,這樣的方式我們直接就進入了容器內部,@xxxxx即為創建的容器的id。
那麼怎麼退出容器呢,不是Ctrl+c哦,是exit:
(2)既然有交互式,就有後臺式,事實上我們常用後臺式:
<code>docker run -id --name=容器名稱鏡像名稱:標籤/<code>
如圖所示創建成功之後沒有進入容器內部。那麼當我們想要進入容器內部怎麼辦呢?可以用下面的命令:
<code>docker exec -it 容器名稱(或者容器ID) /bin/bash/<code>
如圖我們雖然以後臺的方式啟動容器,但是依然可以進入容器!
查看容器:
<code>docker ps 查看正在運行的容器
docker ps –a 查看所有的容器/<code>
啟動和停止容器:
<code>docker stop 容器id或者容器名
docker start 容器id或者容器名/<code>
拷貝文件:
<code>docker cp 需要拷貝的文件或目錄容器名稱:容器目錄->把宿主機的文件拷貝到容器裡
docker cp 容器名稱:容器目錄需要拷貝的文件或目錄->從容器中拷貝文件到宿主機/<code>
目錄映射示例:
我們可以在創建容器的時候通過 -v參數,將宿主機的目錄文件與容器內的目錄文件進行映射,這樣我們就可以通過修改宿主機目錄文件從而去影響容器。
<code>格式:創建容器 –v 宿主機的目錄:容器的目錄
如:docker run -id -v/usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest/<code>
ps(如果你共享的是多級的目錄,可能會出現權限不足的提示。這是因為CentOS7中的安全模塊selinux把權限禁掉了,我們可以添加參數 --privileged=true 來解決映射目錄沒有權限的問題)
查看容器的數據:
<code>docker inspect 容器名稱(容器ID)/<code>
信息有很多,這裡是它的端口和ip.
刪除容器:(注意刪除之前要先停掉要刪除的容器,否則會刪除失敗)
<code>docker rm 容器名稱(容器ID)/<code>
至此docker的基本操作大家已經有所瞭解了,不過初學者還是可能不太明白,下面通過實際部署開發必須的MySQL示例來為大家展示:
(在此之前要記得先啟動docker:systemctlstart docker)
MySQL部署:
1.拉取MySQL鏡像
<code>docker pull centos/mysql-57-centos7/<code>
可以看到首先我已經獲取到了MySQL的鏡像文件
2.通過鏡像文件創建容器:(後臺運行)
<code>docker run -di --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7/<code>
注意:
-p 前面的端口是宿主機的端口,後面的是容器內部MySQL的默認端口。宿主機的端口可以任意,只是用來映射容器內部的MySQL的,不過通常都是寫成一致的。
-e 表示添加容器的環境變量,MYSQL_ROOT_PASSWORD參數表示登錄MySQL的root用戶的密碼。
由圖看到我們的MySQL容器已經啟動了,接下來我們就可以連接它了:
連接名任意;ip地址寫宿主機的ip;端口是宿主機映射容器的端口,即冒號前面的端口;使用配置的root用戶和密碼。
可以看到已經成功連接了,是不是有種神奇的感覺?如果你想在其它機器上使用這個MySQL容器,只需要複製運行即可!
今天的東西有些可能需要理解,初學者還是自己動手親自實踐一下吧!
閱讀更多 碼農code之路 的文章