docker入門教程二

原創 | docker入門教程二

接著上次,我們繼續入門docker:


容器相關命令


創建容器:(實際上是有dockercreate方法的,這樣就是創建一個容器,並不會運行,run相當於create+start,新版docker推薦使用run)

<code>docker run /<code>


但我們並不直接這樣使用,會跟著各種參數進行配合使用:

-i:表示創建並運行容器

-t:表示容器啟動後會進入其命令行。通常於-i一起使用:-it表示創建並運行容器,且運行之後自動進入為當前應用打開一個默認終端,這麼說比較蒼白,看圖吧:

原創 | docker入門教程二

由圖我們可以看到,相當於我們顯示地運行了一臺redis。


--name :為創建的容器命名。


-v:表示目錄映射關係(前者是宿主機目錄,後者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。(這個可能有些人不太理解,在這裡我先簡單說一下,運行在容器內的應用我們無法修改它的配置文件,即時我們能夠進入容器內部,也沒有可編輯的命令工具,因此我們需要用到目錄映射,把容器內的文件映射到宿主機上,這樣修改宿主機上的文件就間接修改而來容器內部的文件,這在實際開發中是很常用的)。


-d:在run後面加上-d參數,則會創建一個守護式容器在後臺運行,與-t相反。

-p:表示端口映射,前者是宿主機端口,後者是容器內的映射端口,程序訪問是通過宿主機映射端口來訪問容器的。可以使用多個-p做多個端口映射


(1)交互式的方式創建容器:


<code>docker run -it --name=容器名稱鏡像名稱:標籤 /bin/bash/<code>

效果如圖:(為了效果,我使用了相同的name和鏡像,docker是不能創建相同name的容器的,事實上我已經把上一個創建的容器刪除了)

原創 | docker入門教程二


可以看出不同,這樣的方式我們直接就進入了容器內部,@xxxxx即為創建的容器的id。

那麼怎麼退出容器呢,不是Ctrl+c哦,是exit:

原創 | docker入門教程二


(2)既然有交互式,就有後臺式,事實上我們常用後臺式:


<code>docker run -id --name=容器名稱鏡像名稱:標籤/<code>

原創 | docker入門教程二


如圖所示創建成功之後沒有進入容器內部。那麼當我們想要進入容器內部怎麼辦呢?可以用下面的命令:

<code>docker exec -it 容器名稱(或者容器ID) /bin/bash/<code> 

原創 | docker入門教程二


如圖我們雖然以後臺的方式啟動容器,但是依然可以進入容器!


查看容器:


<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>

原創 | docker入門教程二

信息有很多,這裡是它的端口和ip.


刪除容器:(注意刪除之前要先停掉要刪除的容器,否則會刪除失敗)


<code>docker rm 容器名稱(容器ID)/<code>

至此docker的基本操作大家已經有所瞭解了,不過初學者還是可能不太明白,下面通過實際部署開發必須的MySQL示例來為大家展示:

(在此之前要記得先啟動docker:systemctlstart docker)


MySQL部署:


1.拉取MySQL鏡像


<code>docker pull centos/mysql-57-centos7/<code> 


原創 | docker入門教程二

可以看到首先我已經獲取到了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用戶的密碼。

原創 | docker入門教程二

由圖看到我們的MySQL容器已經啟動了,接下來我們就可以連接它了:


原創 | docker入門教程二

連接名任意;ip地址寫宿主機的ip;端口是宿主機映射容器的端口,即冒號前面的端口;使用配置的root用戶和密碼。


原創 | docker入門教程二

可以看到已經成功連接了,是不是有種神奇的感覺?如果你想在其它機器上使用這個MySQL容器,只需要複製運行即可!


今天的東西有些可能需要理解,初學者還是自己動手親自實踐一下吧!


分享到:


相關文章: