---
# System prepended metadata

title: 雲端通訊整合實務(10/13)
tags: [docker]

---

# 雲端通訊整合實務(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)