# 20201013 管理和使用容器

## 課堂資料

#### Docker -- 從入門到實踐 --容器互連：

{% embed url="<https://philipzheng.gitbook.io/docker_practice/network/linking>" %}

#### Docker 與 DNS：

{% embed url="<https://dotblogs.com.tw/grassshrimp_tech_intern/2016/06/18/071957>" %}

{% embed url="<https://www.kubernetes.org.cn/5883.html>" %}

{% embed url="<https://blog.kevinyang.net/2020/08/03/docker-101-note-3/>" %}

{% embed url="<https://www.jinnsblog.com/2018/12/docker-dockerfile-guide.html>" %}

{% embed url="<https://github.com/kstaken/dockerfile-examples>" %}

## 課堂練習

### 容器使用

#### Docker Link 使用

{% tabs %}
{% tab title="vm1 - c1" %}

```
docker run -it --name c1 busybox sh
```

![c1](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MJVTR5uHb__9BRVi3y0%2F-MJV_XXBpMNjcXeO_y2L%2F00.jpg?alt=media\&token=75e8631e-14d5-4ca7-91eb-c5c166284aab)

> #### 查詢 IP&#x20;

```
ifconfig
```

{% endtab %}

{% tab title="vm1 - c2" %}

```
docker run -it --name c2 --link c1:c1 busybox sh
```

![c2](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MJVTR5uHb__9BRVi3y0%2F-MJV__AZjAvO7amOrAvV%2F01.jpg?alt=media\&token=be77bfe3-17f3-4fc3-ad9f-49e9b66c80b9)

> #### 查詢 IP&#x20;

```
ifconfig
```

> #### c2 直接 ping c1

```
ping c1
```

![c2](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MJVTR5uHb__9BRVi3y0%2F-MJVaej9swDZtEr9zwmy%2F02.jpg?alt=media\&token=5df12647-eeff-473a-bf9d-d8891efd736c)

{% hint style="info" %}
c2 能直接 ping c1，c1 則不行直接 ping c2
{% endhint %}

```
cat /etc/hosts
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MJVTR5uHb__9BRVi3y0%2F-MJVdg_fJa2HKbaFUBUB%2F03.jpg?alt=media\&token=6004df5a-b4e3-41c1-96b8-54d9704dc322)
{% endtab %}

{% tab title="vm1 - c3" %}

```
docker run -it --name c3 --network mynet busybox sh
```

```
docker run -it --name c4 --network mynet busybox sh
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmpTLsY16OHqRnud20%2Fimage.png?alt=media\&token=21c5556e-148d-444f-b7a8-1db589639071)

```
cat /etc/hosts
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmpsIyBVy3_7iklnp6%2Fimage.png?alt=media\&token=aa550864-69ca-4233-a9bf-a1270133f660)
{% endtab %}
{% endtabs %}

### Docker 與 DNS

```
docker run -d --net=mynet --name web training/webapp
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmu4zhU6fYxG8_MaWG%2Fimage.png?alt=media\&token=fc54c877-eeaa-4fd9-97fb-b0608f4ba1ba)

```
docker exec -it web bash
```

```
ping db
```

```
exit
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmuZH2AtMWw6YeeZPf%2Fimage.png?alt=media\&token=b533ebbf-f272-4832-a07e-c1655333c9d7)

```
docker network ls
```

```
docker run -d --net=mynet --name db training/postgres
```

```
docker run -d --net=mynet --name web training/webapp
```

```
docker ps
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmv_RPZL1fCXrKlDzd%2Fimage.png?alt=media\&token=e2cadc96-dcfd-4c1d-a685-cbee9691416f)

```
docker exec -it web bash
```

```
ping web
```

```
ping db
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmw4Ntu2OzekwwFb2L%2Fimage.png?alt=media\&token=25a54c07-27f9-4baf-b9ac-5aa618740509)

```
exit
```

```
cd
```

```
mkdir -p /data
```

```
cd /data
```

```
echo "hi" > hi.htm
```

```
cd
```

```
docker run -itd --name myweb -p 8080:80 -v /data:/usr/local/apache2/htdocs httpd
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmxbz9ZJSmUgBzWxB7%2Fimage.png?alt=media\&token=28b0e7cc-80f0-4097-a4a4-265747e67102)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmxWOI__0--B8sT1ig%2Fimage.png?alt=media\&token=87381274-7848-4b86-b47b-94e72d343996)

```
docker run -itd --name myweb1 -p 8081:80 -v /usr/local/apache2/htdocs httpd
```

```
docker inspect myweb1
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmyAYO-ju-x-hR2VyJ%2Fimage.png?alt=media\&token=05d0c4d2-d6b7-4f70-a180-7a9c5f05eaa3)

```
cd ["mounts":Source]
```

```
echo "hello" > hello.htm
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmz3djIsxVGPjJsD8J%2Fimage.png?alt=media\&token=f4e3d39c-bf89-4936-8d4f-10f620aa0493)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmlKKMpIwzmCfXZP47%2F-MOmyxlULPyt5XJfL1zO%2Fimage.png?alt=media\&token=fb0b7e39-1a4f-4488-8b30-58a329fdb37e)

```
docker volume ls
```

```
docker volume create --name webdata
```

```
docker volume ls
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn-SmtFkCrDDHQS_ak%2Fimage.png?alt=media\&token=dc57ea4a-b3a0-4824-9e7d-dd320acce35f)

```
docker run -itd --name myweb2 -p 8082:80 -v webdata:/usr/local/apache2/htdocs httpd
```

```
docker inspect [容器ID]
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn-uBEyF3YrE5uh9FE%2Fimage.png?alt=media\&token=5e8bc265-6457-4d6d-8ae7-3a1a9035f818)

```
cd ["mounts":Source]
```

```
echo "1" > 1.htm
```

```
echo "2" > 2.htm
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn0QEYMiK2CuZBdtQh%2Fimage.png?alt=media\&token=d640a44c-0f80-4370-96ac-c54981bf3641)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn0WvgVpZ3UepwuRT4%2Fimage.png?alt=media\&token=8edbc52b-61ce-41e3-bd38-8ba6261fc37a)

```
docker run -itd --name myweb3 -p 8083:80 -v webdata:/usr/local/apache2/htdocs httpd
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn0jZfZWQ7iyiKc12q%2Fimage.png?alt=media\&token=2efbd3e7-db8f-4143-9aa3-f3fb8a5c4269)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn0oigVxzqebe9Vc6f%2Fimage.png?alt=media\&token=b3dc9420-4836-4992-97ad-6825bf5c15b2)

```
cd
```

### 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://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn22fy5RrnavsuQRjn%2Fimage.png?alt=media\&token=9ef863b1-94cd-4045-8541-cdbe2d44c37d)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn2FVgPwCGne20M0oV%2Fimage.png?alt=media\&token=ca5c0ed7-7521-476e-9597-343d450b0f2c)

{% hint style="info" %}
預設密碼：12345678
{% endhint %}

> #### Dashboard

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn4-V-D3XDXFkkDYnM%2Fimage.png?alt=media\&token=8a41fafa-f877-45b9-a93c-71ca619d7936)

> #### Images
>
> #### Images > Build a New Image

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn5K1owvIpS_XgVEig%2Fimage.png?alt=media\&token=09eaa904-81be-4cde-bef3-6a9684284cfa)

> #### Build a New Image
>
> #### Web editor

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn62KaWaSWP5p5DK6y%2Fimage.png?alt=media\&token=072b874b-496b-4d9a-9d5a-dd9c9802ee1c)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn-4PctgzmqoOGjaB_%2F-MOn6B_RwTLkVctBfxlb%2Fimage.png?alt=media\&token=2e104f05-1a74-47c4-876f-22819750edce)

```
cd /home/user
```

```
docker history [httpd容器ID]
```

```
docker run -it --rm busybox echo "hello"
```

```
cd 
```

{% tabs %}
{% tab title="/test1" %}

```
mkdir test1
```

```
cd test1
```

```
vim Dockerfile
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOn9YoCK3lnMQxTs8bD%2Fimage.png?alt=media\&token=7a2d5993-3b95-476d-8e4f-4ca4ae7404a6)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOn9Km6gyNjzYXD6zf0%2Fimage.png?alt=media\&token=33c1e42c-56d2-469d-b9f9-97be54cf6c4e)

```
docker build -t myweb:0.1 .
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOnE1BGdCOjViwZ0pMM%2Fimage.png?alt=media\&token=b2cca6cd-f374-4f98-94b7-c5ed733d4a24)

```
docker run -it --rm myweb:0.1 echo "hi"
```

```
docker run -d -p 8085:80 myweb:0.1
```

```
curl 127.0.0.1:8085
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOnK60qRF758s4q5Wsz%2Fimage.png?alt=media\&token=18eb5ead-dfaf-4b70-82af-14e00eee1c95)
{% endtab %}

{% tab title="/home/user" %}

```
docker run -it --rm httpd:latest echo "hi"
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOnFPvlPr3j8TtHjjp9%2Fimage.png?alt=media\&token=b86d942e-de1a-4f6d-8884-b5d79a2300a4)

```
docker ps
```

```
docker run -d -p 8088:80 httpd
```

```
docker ps
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOnKoA8cVmRzIcgMpxP%2Fimage.png?alt=media\&token=9f1e0984-8ff5-43fc-b7c2-fdfd9c8bc0d1)

```
docker stop [容器ID]
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOn7XarJhahz63WPTq-%2F-MOnKy8nufSDk7iG6zEp%2Fimage.png?alt=media\&token=13594428-f224-4b37-8934-ffaa1e624056)
{% endtab %}
{% endtabs %}
