欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在Docker中使用Docker命令

這篇文章主要介紹“怎么在Docker中使用Docker命令”,在日常操作中,相信很多人在怎么在Docker中使用Docker命令問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么在Docker中使用Docker命令”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了臨潭免費建站歡迎大家使用!

 1. 典型適用場景

在 CI 中,通常會有一個 CI Engine 負責解析流程,控制整個構(gòu)建過程,而將真正的構(gòu)建交給 Agent 去完成。例如,Jenkins 、GitLab 均是如此。

如下圖, 連接 CI Engine 的 Agent, 種類很多。這是為了滿足不同項目對構(gòu)建環(huán)境的要求。

怎么在Docker中使用Docker命令

同時 Agent 是動態(tài)的,構(gòu)建時才需要,構(gòu)建完成時即銷毀。CI 非常適合實踐容器、Serverless 等技術(shù),因此在生產(chǎn)過程中 Agent 經(jīng)常是容器化的。

那么問題就來了?如果 CI Engine 也是容器化的,在容器中如何使用 Agent 容器去構(gòu)建呢?如果 Agent 已經(jīng)是容器化的,那么在 Agent 上如何構(gòu)建鏡像呢?這就是本篇將給出的回答,如何在 Docker 中使用 Docker。

2. 兩種使用模式

我們需要知道 Docker 以 C/S 模式工作,主要分為兩個部分,Docker CLI 和 Docker Daemon 。Docker CLI ,也就是客戶端,提供給用戶命令行操作 Docker,例如 docker create/images/ps 等。Docker Damon ,也就是守護進程,負責接受用戶指令,維護容器的生命周期。

2.1 Docker in Docker

Docker in Docker ,以下簡稱 DinD 。

怎么在Docker中使用Docker命令

如上圖,可以在 Container 中直接運行一個 Docker Daemon ,然后使用 Container 中的 Docker CLI 工具操作容器。

這種方式下,容器中的 Docker Daemon 完全獨立于外部,具有良好的隔離特性??雌饋恚珻ontainer 類似一個 VM ,但 DinD 的作者自己也不是很推薦。

主要原因還是安全問題。DinD 需要以特權(quán)模式啟動,這種嵌套會帶來潛在的安全風險。

這種方式下,響應命令的容器嵌套于使用 docker 命令的容器。

2.2 Docker outside of Docker

Docker outside of Docker ,以下簡稱 DooD 。

怎么在Docker中使用Docker命令

如上圖,Docker 以 C/S 模式工作,使用時用戶關(guān)注的是 C 端,而生命周期的管理在 S 端。

因此,只需要將 Container 的外部 Docker Daemon 服務掛載到 Container 。讓 Container 誤以為本地運行了 Docker Daemon,使用 Docker CLI 命令操作時,外部的 Docker Daemon 會響應請求。

這種方式下,響應命令的容器與使用 docker 命令的容器處于同一層級。

3. Docker 環(huán)境下的演示

3.1 DinD

  •  運行 DinD 容器 

$ docker run --privileged -e DOCKER_TLS_CERTDIR="" -d --name dockerd  docker:dind  d6414f2ff0076c42de19a8a1fe122481c1a72b3bd45fd490dbe1c427414b4139
  •  運行帶 CLI 的容器鏈接 DinD 容器 

$ docker run --rm -it --link dockerd:docker docker:latest sh
  •  在 DinD 容器中,拉取鏡像 

# 拉取鏡像  $ docker pull shaowenchen/devops-java-sample  # 查看鏡像  $ docker images  REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE  shaowenchen/devops-java-sample   latest              fa4651c24a18        6 weeks ago         122MB

使用起來和一個獨立的 Docker Daemon 環(huán)境一樣。

  •  查看外部是否受影響

鍵入 exit 退出容器,通過主機上的 Docker Daemon

$ docker images |grep fa4651c24a18

符合預期。DinD 使用的是獨立的 Docker Daemon,對外部的實例沒有直接影響。

3.2 DooD

  •  運行一個容器 

$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock alpine sh
  •  安裝 curl

這里為了避免安裝 Docker CLI ,直接使用 curl 調(diào)用 Docker Daemon 的 API。

$ apk update && apk add curl
  •  拉取鏡像 

$ curl -XPOST --unix-socket /var/run/docker.sock http://localhost/images/create?fromImage=shaowenchen/docker-robotframework&tag=latest  ...  {"status":"Status: Downloaded newer image for shaowenchen/docker-robotframework"}
  •  查看拉取的鏡像

鍵入 exit 退出容器,通過主機上的 Docker Daemon

$ docker images |grep robotframework  shaowenchen/docker-robotframework                              latest                         d99cfa7ee716        12 months ago       1.5GB

符合預期。DooD 方式直接使用的外部 Docker Daemon。

4. Kubernetes 環(huán)境下的演示

4.1 DinD

  •  創(chuàng)建一個 dind.yaml 文件,內(nèi)容如下: 

apiVersion: apps/v1  kind: Deployment  metadata:    name: dind  spec:    replicas: 1    selector:      matchLabels:        app: dind    template:      metadata:        labels:          app: dind      spec:        containers:          - name: dockerd            image: 'docker:dind'            env:              - name: DOCKER_TLS_CERTDIR                value: ""            securityContext:              privileged: true          - name: docker-cli            image: 'docker:latest'            env:            - name: DOCKER_HOST              value: 127.0.0.1            command: ["/bin/sh"]            args: ["-c", "sleep 86400;"]
  •     創(chuàng)建 Deployment 

$ kubectl apply -f dind.yaml
  •  查看創(chuàng)建的 Pod 名 

$ kubectl get pod |grep dind  dind-5446ffbc8d-68q28   2/2     Running       0          12s
  • 進入 Pod 

$ kubectl exec -it dind-5446ffbc8d-68q28  -c docker-cli sh
  •  測試是否使用獨立的 Docker Daemon 

$ docker pull nginx  $ docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              daee903b4e43        3 days ago          133MB

符合預期,這里僅顯示了剛拉取的 Nginx 的鏡像,完全獨立于主機的 Docker Daemon。

4.2 DooD

  •  創(chuàng)建一個 dood.yaml 文件,內(nèi)容如下: 

apiVersion: apps/v1  kind: Deployment metadata:    name: dood  spec:    replicas: 1    selector:      matchLabels:        app: dood    template:      metadata:        labels:          app: dood      spec:        containers:          - image: docker:latest            name: docker-cli            securityContext:              privileged: false            command: ["/bin/sh"]            args: ["-c", "sleep 86400;"]            volumeMounts:            - mountPath: /var/run/docker.sock              name: volume-docker        volumes:          - hostPath:              path: /var/run/docker.sock              type: ""            name: volume-docker
  •  創(chuàng)建 Deployment 

$ kubectl apply -f dood.yaml
  •  查看創(chuàng)建的 Pod 名 

$ kubectl get pod  |grep dood  dood-667d8bcfc6-d5fzf   1/1     Running   0          15s
  •  進入 Pod 

$ kubectl exec -it dood-667d8bcfc6-d5fzf  -c docker-cli sh
  •  測試是否使用的是主機的 Docker Daemon 

$ docker images |wc  69       482      8509

符合預期,這里 Docker 命令使用的就是外部的 Docker Daemon。

5. 參考

  1.  https://medium.com/better-programming/about-var-run-docker-sock-3bfd276e12fd

  2.  https://github.com/jpetazzo/dind 

到此,關(guān)于“怎么在Docker中使用Docker命令”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

文章名稱:怎么在Docker中使用Docker命令
標題網(wǎng)址:http://aaarwkj.com/article10/gpijgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務器托管、關(guān)鍵詞優(yōu)化、定制開發(fā)網(wǎng)站導航、App設(shè)計靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
日韩中文字幕在线二区| 在线观看青青草原免费| 人人妻人人澡人人妻| 熟妇人妻中文字幕在线| 国产精品国产高清国产一区| 欧美一区二区成人精品视频| 九九热这里只有免费视频| 亚洲国际天堂av在线| 久久夜色一区二区三区| 日韩av毛片在线观看| 国产男女做爰在线视频| 青青草最新网址在线观看视频| 91熟女成人精品一区二区| 欧美黄片在线免费观看| 99精品亚洲一区二区| 丰满人妻的诱惑中文字幕| 亚洲欧美国产精品久久久| 欧美日韩精品一区二区三| 2021天天操夜夜爽| 亚洲综合一区国产精品| 日韩有码中文字幕av| 国语精品对白交换日韩| 高清美女视频亚洲免费| 日韩中字伦理熟妇人妻| 日韩一区二区三级电影| 国产精品粗又长一区| 麻豆国产精品原创av男女| 大胆丰满邻居少妇在线观看| 中文字幕成人资源网站| 色哟哟视频在线免费观看| 高潮少妇高潮少妇av| 免费观看亚洲视频一区二区三区| 欧美夫妻香蕉视频网站| 啪啪视频日韩一区二区| 日韩精选视频在线播放| 久久国产精品亚洲av四虎| 国产精品一区二区麻豆本子| 国产一区999精品在线| 亚洲欧美日韩精品二区| 午夜最新福利在线视频| 黄片免费在线播放欧美|