# 雲端通訊整合實務(10/13) ###### tags: `docker` # 測試1 ## --link指令來讓容器進行連接 創建兩個容器c1、c2 ``` docker run -it --name c1 busybox sh ``` ![](https://i.imgur.com/qzy9d3C.png) c2使用`link`與c1進行連接 ``` docker run -it --name c2 --link c1:c1 busybox sh ``` ![](https://i.imgur.com/uhcroZS.png) 檢查ip,並進行`ping`測試: ![](https://i.imgur.com/bcdzb3w.png) > 其中比較特別的是,只有c2可以去進行ping 「名稱」的動作 ![](https://i.imgur.com/jtN4qmu.png) > 而c1去進行ping c2的動作時,會出現這樣的結果: ![](https://i.imgur.com/PH7sXbf.png) 原因在`/etc/hosts`出現了這樣的結果: ![](https://i.imgur.com/lsgos6v.png) # 測試2 ## 認識docker network 查看`docker network`狀態,分別為:`bridge`、`host`、`null` ``` docker network ls ``` 創建docker network ``` docker network create -d bridge mynet ``` 執行postgres容器 ``` docker run -d --net=mynet --name db training/postgres ``` 執行webapp容器 ``` docker run -d --net=mynet --name web training/webapp ``` 執行完後,進入web容器內: ``` docker exec -it web bash ``` > 分別進行ping web、db # 測試3 ## 更換httpd存放路徑 執行正常的http容器: ``` docker run -itd --name myweb -p 8080:80 -v /data:/usr/local/apache2/htdocs httpd ``` 獲取鏡像、容器的資訊 ``` docker inspect [容器ID] ``` 會看到類似這樣的資訊: ``` "Mounts": [ { "Type": "bind", "Source": "/data", "Destination": "/usr/local/apache2/htdocs", "Mode": "", "RW": true, "Propagation": "rprivate" } ], ``` 可以看到說,我們將httpd的網頁放在`/data`下,因此可以在`/data`創建`echo "hi" > hi.htm`去進行網頁測試。 > 而`/data`下的`hi.htm`會去對應`/usr/local/apache2/htdocs`下,因此才會有`-v /data:/usr/local/apache2/htdocs` **要如何去更換目前的路徑,並且能保留原本資料呢? 可以使用:** ``` docker volume ls ``` 創建一個volume ``` docker create volume --name webdata ``` 接著測試自定義路徑下的http容器: ``` docker run -itd --name myweb1 -p 8081:80 -v webdata:/usr/local/apache2/htdocs httpd ``` 並使用: ``` docker inspect myweb1 ``` 找到這欄資訊: ``` "Mounts": [ { "Type": "volume", "Name": "webdata", "Source": "/var/lib/docker/volumes/webdata/_data", "Destination": "/usr/local/apache2/htdocs", "Driver": "local", "Mode": "z", "RW": true, "Propagation": "" } ], ``` 並進到此路徑下,創建個簡單的網頁來進行測試本機端IP的8080以及8081埠: ![](https://i.imgur.com/QurbyJc.jpg) ![](https://i.imgur.com/ir7haCX.jpg) # 測試4 ## 圖形化docker(Portainer) 創建portainer ``` docker run -d -p 9000:9000 --restart=always --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /Users/lee/dev/docker_file/portainer/data:/data docker.io/portainer/portainer ``` ![](https://i.imgur.com/cg9VQjM.jpg) 進去後可以看到這樣的畫面,代表說已經成功開啟圖形化docker了 ![](https://i.imgur.com/y9ho02L.jpg) ## Reference 1. [上課影片](https://drive.google.com/drive/folders/1oM_ejAeSIhGbDGAVBDnVRv4DuoXaDwYw?usp=sharing)