# Docker integration + Artifact Registry > [name=陳信安] > [time=TUE, OCT 12, 2020 16:36 PM] --- # Agenda * 何謂Docker * 容器與虛擬主機差異 * Docker核心元素與常用指令 * Artifact Registry * Docker-compose * Docker-compose常用指令 --- ## 何謂Docker 可以將應用程式虛擬化並運行在任何地方,讓我們可以不用花費太多時間在建置與安裝基礎設施上 --- ## 容器與虛擬主機差異 ![](https://i.imgur.com/7jYSiC2.png) --- ## Docker核心元素與常用指令 Docker的啟動時間是秒級的,大量節省開發、測試、部署的時間。主要核心元素如下: * 映像檔(Image): 映像檔可以用來建立Docker容器 * 容器(Container): 它可以被啟動、開始、停止、刪除,每個容器都是相互隔離、保證安全的 * 倉庫(Registry): 集中存放映像檔的倉庫 --- ## Docker特性 ![](https://i.imgur.com/7BbzSFL.png) --- ### Docker 工作流程圖 ![](https://i.imgur.com/BssPo3z.png) --- ### Docker 常用指令 ![](https://i.imgur.com/PC7BsZd.png) --- ### Demo-nginx範例 ```= docker run -d (--rm) --name nginx --restart=always -p 8080:80 nginx:1.19.3 ``` ###### 備註:tag禁止使用latest因為會快取 --- ### 建立映像檔 Dockerfile是一個文字格式用來設定容器環境 ![](https://i.imgur.com/JRILwkn.png) --- ### Dockerfile ```= FROM nginx COPY index.html /usr/share/nginx/html ``` ### docker build ```= docker build -t mynginx . ``` ### docker run ```= docker run -d --rm -p 8080:80 mynginx ``` ![](https://i.imgur.com/4FIOhQu.png) --- ### 容器內使用PING 首先先進入容器內後執行 ```= apt-get update ``` 安裝ping工具 ```= apt-get install iputils-ping ``` --- 先建立netwotk ```= docker network create db-network ``` 查看network ```= docker network ls ``` ![](https://i.imgur.com/W9OKH4J.png) --- 建container ```= docker run -d --name mysql --net db-network -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.31 docker run -d --name myadminer --net db-network -p 8888:8080 adminer:4.7.7 ``` --- 查看container細項 ```= docker inspect containID ``` ![](https://i.imgur.com/IZjBBE8.png) --- ## 倉庫 Repository (倉庫) 是集中存放映像檔的地方 Registry (倉庫註冊伺服器) 是存放與管理多個倉庫 倉庫類型:公開(Public)、私有(Private) * 公開倉庫: Docker Hub * 私有倉庫: Gitlab、harbor Google Container Registry (GCR) Azure Container Registry (ACR) Amazon Elastic Container Registry (ECR) --- ## Artifact Registry Container Registry 的進化版,用來集中管理容器映像檔和語言套件 (例如 Maven 和 npm) ![](https://i.imgur.com/5g2d5RX.png) ###### 安裝並初始化[Cloud SDK](https://cloud.google.com/sdk/docs/quickstart#windows) --- ### 定價 系統會收取儲存空間和網路輸出流量費用 * 儲存空間: ![](https://i.imgur.com/HgdTg50.png) ###### 備註: 單一地區和多地區存放區的價格均相同 GCR儲存空間$0.026美元(每GB) --- * 網路輸出 ![](https://i.imgur.com/GpeAV7i.png) --- ![](https://i.imgur.com/Wp7v3yM.png) --- 完成建立 ![](https://i.imgur.com/zCN3ImT.png) --- Artifact Registry驗證 ```= gcloud auth configure-docker asia-east1-docker.pkg.dev ``` ###### 備註:需留意倉庫的建立區域(asia-east1) ![](https://i.imgur.com/P0CphlU.png) --- 推送映像檔至Artifact Registry repository 1. 將映像檔帶版號 ```= docker tag mynginx(自定義映像檔) asia-east1-docker.pkg.dev/PROJECTID/REPO-NAME/IMAGE-NAME:tag ``` 2. Push ```= docker push asia-east1-docker.pkg.dev/PROJECTID/REPO-NAME/IMAGE-NAME:tag ``` --- ![](https://i.imgur.com/R9U8X1P.png) ![](https://i.imgur.com/ExgLCWU.png) --- 拉取映像檔至本機 ```= docker pull asia-east1-docker.pkg.dev/PROJECTID/REPO-NAME/IMAGE-NAME:tag ``` ![](https://i.imgur.com/H2GJ8Kz.png) --- ## docker-compose docker-compose是一個工具,用來管理與執行多個容器。 --- docker-compose.yml用來定義容器參數,讓他們可以在獨立環境內一起執行 最後執行docker-compose up將會建立與執行你所定義的容器 --- docker-compose.yml 檔案看起來像這樣(adminer與mysql) ```= version: "3" services: db: container_name: "mysql" image: "mysql:5.7.31" command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: rootpwd MYSQL_USER: user MYSQL_PASS: user ports: - 3306:3306 adminer: container_name: "adminer" image: "adminer:4.7.7" restart: always ports: - 8888:8080 ``` --- ## docker-compose常用指令 ![](https://i.imgur.com/1AhmM6G.png) --- ## Reference [Docker工作流程圖](https://kknews.cc/code/vak8np4.html) [Artifact Registry](https://cloud.google.com/artifact-registry?hl=zh-tw) ## home work * docker run -v -p * docker logs -f --tail 10 * docker exec -it xxx bash * 跨容器通訊(容器內的dns解析) * dockerfile -> docker build -> docker push -> docker pull -> docker run * docker-compose up *
{"breaks":true,"metaMigratedAt":"2023-06-15T14:02:53.515Z","metaMigratedFrom":"YAML","title":"docker integration + Artifact Registry","contributors":"[{\"id\":\"eb2e54af-dbaa-403f-b0cd-84e7c5f68bf7\",\"add\":1,\"del\":1},{\"id\":\"83162077-2ad2-4507-aaf7-5b5de0cf9767\",\"add\":4877,\"del\":1052},{\"id\":\"9acc9603-61e8-40aa-b538-fdce22d06df3\",\"add\":307,\"del\":28}]"}
    634 views
   Owned this note