# 雲端通訊整合實務(10/13)
###### tags: `docker`
# 測試1
## --link指令來讓容器進行連接
創建兩個容器c1、c2
```
docker run -it --name c1 busybox sh
```

c2使用`link`與c1進行連接
```
docker run -it --name c2 --link c1:c1 busybox sh
```

檢查ip,並進行`ping`測試:

> 其中比較特別的是,只有c2可以去進行ping 「名稱」的動作

> 而c1去進行ping c2的動作時,會出現這樣的結果:

原因在`/etc/hosts`出現了這樣的結果:

# 測試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埠:


# 測試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
```

進去後可以看到這樣的畫面,代表說已經成功開啟圖形化docker了

## Reference
1. [上課影片](https://drive.google.com/drive/folders/1oM_ejAeSIhGbDGAVBDnVRv4DuoXaDwYw?usp=sharing)