> For the complete documentation index, see [llms.txt](https://anida-huang.gitbook.io/cloud-communication/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://anida-huang.gitbook.io/cloud-communication/qi-zhong/ying-xiang-yu-cang-ku-er.md).

# 20201006 映像與倉庫 (三)

## 課堂資料

#### 如何備份 Docker Image 為 tar 檔：

{% embed url="<https://ithelp.ithome.com.tw/articles/10191387>" %}

#### Docker Harbor 安裝：

{% embed url="<https://github.com/goharbor/harbor/releases/tag/v1.10.0>" %}

{% embed url="<http://csie.nqu.edu.tw/smallko/harbor1.9.0.tgz>" %}

#### Docker容器倉庫Harbor的安裝部署：

{% embed url="<https://learnku.com/articles/29884>" %}

{% embed url="<https://kknews.cc/zh-tw/code/5n9poj6.html>" %}

{% embed url="<https://godleon.github.io/blog/Docker/docker-network-bridge/>" %}

### Harbor&#x20;

#### Harbor 的安裝部署

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

```
systemctl status sshd
```

```
docker save -o myhttpd.tar [鏡像ID]
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MO_769DYffIvorsQNft%2F-MO_8Z84CFADUmYQsjmE%2Fimage.png?alt=media\&token=e4ae0b85-0aca-4df1-b6fd-56b785a9164d)

```
scp myhttpd.tar user@192.168.8.130:/home/user
```

### [下載安裝包](https://github.com/goharbor/harbor/releases/tag/v1.10.0)

```
ls
```

```
mv harbor1.9.0.tgz /root
```

```
ls
```

```
cd
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MObIicijr2Mk6DqTccD%2F-MObO8JyHwaGcUiZouaC%2Fimage.png?alt=media\&token=ec81a6d5-b212-4000-965c-07f069c5666d)

### 安裝和配置

```
tar xvf harbor1.9.0.tgz
```

```
cd harbor
```

```
ls
```

```
gedit harbor.yml &
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MObIicijr2Mk6DqTccD%2F-MObPI8lxbok7eL85QIh%2Fimage.png?alt=media\&token=a47bd8b5-5af7-413a-b06c-de74e31c5bd8)

{% hint style="danger" %}
hostname 改為`192.168.8.129`

harbor\_adnim\_password 改為 hb12345
{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MO_KN0E6BhUUBMQz_vm%2F-MO_LRsdzx_Hbl_E1cJQ%2Fimage.png?alt=media\&token=242612f4-2e22-458b-9099-b5addc1ccf94)

#### 執行安裝程序

```
sh install.sh
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MObIicijr2Mk6DqTccD%2F-MObQI0jdy1SqdJeHpkc%2Fimage.png?alt=media\&token=87212024-7a2f-4fb9-972e-b0ccaddcdc26)

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOf9TTBsXH5p2J1XdqU%2F-MOfYEJ2-ozYur2N1Pot%2Fimage.png?alt=media\&token=6500c01e-9bea-4106-8abd-86834946dc80)

{% hint style="info" %}
帳號：admin

密碼：Harbor12345
{% endhint %}
{% endtab %}

{% tab title="vm2" %}

```
ls
```

```
docker load -i myhttpd.tar
```

```
docker images
```

```
docker tag [鏡像ID] [xiaoji850312/鏡像名稱]:1.0
```

```
docker run -itd -p 8080:80 xiaoji850312/httpd:1.0
```

```
curl 127.0.0.1:8080
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MO_769DYffIvorsQNft%2F-MO_DanyldvUuVjNJkyu%2Fimage.png?alt=media\&token=63ff7e45-5c4f-453e-8a5b-41b2783cc599)
{% endtab %}
{% endtabs %}

### Docker Bridge Network

#### Bridge Network 架構

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmYH5jsZB7l0USMvil%2Fimage.png?alt=media\&token=b31bee03-9933-4d6c-9f9e-803439ac2686)

## 課堂練習

### Harbor 操作

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

> #### 抓取 harbor 密碼資料

```
cat harbor.yml | grep -i pass
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOf9TTBsXH5p2J1XdqU%2F-MOfZF1RTMA-p-MY-yor%2Fimage.png?alt=media\&token=30dc6759-79de-4d9c-b048-fda4a6b87bdb)

```
docker-compose up -d
```

* `up -d`：重新啟動
* `-d`：背景執行
  {% endtab %}

{% tab title="vm2" %}

```
docker tag [鏡像ID] 192.168.8.129/libabry/busybox:latest
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOm8u612XeUenpi1SVe%2F-MOmE8TQvu9DludHaGn0%2Fimage.png?alt=media\&token=5ff60acd-2019-41fd-81c0-5e594fec8bd5)

> #### 設定登入配置

```
gedit /etc/docker/daemon.json
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOm8u612XeUenpi1SVe%2F-MOmGosCMpSTEpdHNvJp%2Fimage.png?alt=media\&token=778c1f36-225b-44a7-bb28-217a6ede53ef)

> #### 進入`daemon.json`編輯

```
{
"insecure-registries":["192.168.8.129"]
}
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOm8u612XeUenpi1SVe%2F-MOmGduk3HShGz65XHxD%2Fimage.png?alt=media\&token=98d7ba17-0413-44ea-b19b-00159d4e5d6d)

> #### 啟動`daemon`

```
systemctl daemon-reload
```

```
systemctl restart docker
```

> #### 登入 harbor

```
docker login 192.168.8.129
```

{% hint style="info" %}
帳號：admin

密碼：Harbor12345
{% endhint %}

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOm8u612XeUenpi1SVe%2F-MOmUp5PnYLQ5WQe1GwK%2Fimage.png?alt=media\&token=4b053da0-69bc-4ecc-8f44-70a24e2cba37)

```
docker push 192.168.8.129/library/busybox:latest
```

> #### 查詢關鍵字為`busybox`的鏡像檔

```
docker images | grep busyboxgrep 
```

* `grep`：查詢關鍵字

```
docker pull 192.168.8.129/library/busybox:latest
```

{% endtab %}
{% endtabs %}

### Docker Bridge Network

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

> #### 檢視目前 Docker Network 狀態

```
docker network ls
```

> #### 建立 container

* 第一種網路用法 ( none )：不要啟動任何網路

```
docker run -it --network=none busybox:latest sh 
```

```
ifconfig
```

```
exit
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmabGH5c8cmpugVxdo%2Fimage.png?alt=media\&token=e023eafa-2924-4b3d-b638-224052953da5)

* 第二種網路用法 ( host )：防攻擊、偵測

{% hint style="info" %}
與主機看到的是一樣的
{% endhint %}

```
docker run -it --network=host busybox:latest sh 
```

```
ifconfig
```

```
exit
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmavI9stxDyJz7Zbxc%2Fimage.png?alt=media\&token=662a1f47-09f7-40e5-bc2e-eac917d94335)

* 第三種網路用法 \[( bridge )預設網路類型 ]：docker0

```
docker run -it --network=bridge --name a1 busybox:latest sh 
```

```
ifconfig
```

```
ping 172.17.0.1
```

```
exit
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmbkk_0SwIIgOVahOw%2Fimage.png?alt=media\&token=a9e19ba8-d7d2-4335-9ffd-3f67a6e95dfe)

```
docker run -it --network=bridge --name a2 busybox:latest sh 
```

```
ifconfig
```

```
exit
```

```
docker run -it --network=bridge --name a3 busybox:latest sh 
```

```
ifconfig
```

```
exit
```

```
docker inspect a1
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmd-_MSthEmdJvkJMV%2Fimage.png?alt=media\&token=36849aa1-1c9e-439a-a529-a1ba11353eaa)

> #### 查看`bridge`

```
brctl show
```

> #### 自訂 docker network

```
docker network create --driver bridge mynet
```

```
docker network ls
```

> #### 建立 container

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

```
ifconfig
```

```
exit
```

```
docker network connect bridge a4
```

```
docker network disconnect bridge a4
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmhYkVPopunREY1bnN%2Fimage.png?alt=media\&token=6a6d8682-81c6-4973-80ae-1534cc3f7e74)

> #### 測試 container 網路

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

```
docker exec -it a5 sh
```

![](https://483685739-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MHFSfnhkNCUTnJ2hcGc%2F-MOmX7ht-lM_vyPf9av6%2F-MOmjIF68VEm_y2dunaE%2Fimage.png?alt=media\&token=4525320d-575a-4943-a694-d5adc03e9ff2)
{% endtab %}
{% endtabs %}
