自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Docker容器中運行Docker 「3種方法」

開發(fā)
在本博客中,我將向您介紹在docker中運行docker所需的三種不同方法。

[[342851]]

 Docker In Docker的用處
dockerIndocker的一個潛在用處是CI管道,在代碼成功構建后,您需要在其中構建docker鏡像并將其推送到容器鏡像倉庫。
使用VM構建Docker映像非常簡單。但是,當您計劃將基于 Jenkins docker的動態(tài)代理用于CI/CD管道時,docker In docker是必備功能。
沙盒環(huán)境。
出于實驗目的,在您的本地開發(fā)工作站上。
在Docker容器中運行Docker
在Docker中實現(xiàn)Docker的三種方法

通過掛載docker.sock(DooD方法)運行docker
dind 方法
使用Nestybox sysbox Docker運行時
讓我們詳細了解每個選項。確保在主機中安裝了docker來嘗試此設置。

方法1:使用[/var/run/docker.sock]的Docker中運行Docker

什么是/var/run/docker.sock?
/var/run/docker.sock是默認的Unix套接字。套接字用于在同一主機上的進程之間進行通信。Docker守護程序默認情況下偵聽docker.sock。如果您在運行Docker守護程序的主機上,則可以使用/ var/run/docker.sock管理容器。

例如,如果您運行以下命令,它將返回docker engine的版本。

  1. curl --unix-socket /var/run/docker.sock http://localhost/version 

現(xiàn)在您已經(jīng)了解了什么是docker.sock,讓我們看看如何使用在docker中運行docker。

要在docker內部運行docker,要做的只是在默認Unix套接字docker.sock作為卷的情況下運行docker 。

例如,

  1. docker run -v /var/run/docker.sock:/var/run/docker.sock \           -ti docker-image 

請注意:如果您的容器可以訪問docker.sock,則意味著它具有對docker守護程序的更多特權。因此,在實際項目中使用時,請了解并使用安全隱患。

現(xiàn)在,從容器中,您應該能夠執(zhí)行docker命令來構建鏡像并將其推送到鏡像倉庫。在這里,實際的docker操作發(fā)生在運行docker容器的VM主機上,而不是在容器內部進行。意思是,即使您正在容器中執(zhí)行docker命令,也指示Docker客戶端通過以下docker.sock方式連接到VM主機docker-engine。

此方法實際上在容器內部創(chuàng)建一個子容器。僅當您確實要在容器中包含容器和圖像時才使用此方法。否則,我建議您使用第一種方法。為此,您只需要使用帶有dind標簽的官方docker鏡像即可。該dind映像使用Docker所需的實用程序進行制作以在Docker容器中運行。

方法3:使用Sysbox運行時的Docker中的Docker

方法1和2在安全方面有一些缺點,因為在特權模式下運行容器。Nestybox嘗試通過使用sysbox Docker運行時來解決該問題。

如果使用Nestybox sysbox運行時創(chuàng)建容器,則它可以在能夠運行systemd,docker,kubernetes的容器內創(chuàng)建虛擬環(huán)境,而無需特權訪問基礎主機系統(tǒng)。解釋sysbox需要足夠的理解力,因此我不在本文的討論范圍之內。請參考此頁面以全面了解sysbox。

步驟1:安裝sysbox運行時環(huán)境。請參閱此頁面以獲取有關安裝sysbox運行時的最新官方說明。

第2步:一旦擁有sysbox運行時可用,您要做的就是使用sysbox運行時標志啟動docker容器,如下所示。在這里,我們使用的是官方docker dind映像。

  1. docker run --runtime=sysbox-runc --name sysbox-dind -d docker:dind 

步驟3:現(xiàn)在將exec會話帶到sysbox-dind容器。

  1. docker exec -it sysbox-dind /bin/sh 

現(xiàn)在,您可以嘗試使用Dockerfile構建映像,如先前方法所示。

關鍵注意事項
僅在必要時在Docker中使用Docker。在將任何工作流程遷移到Docker-in-Docker方法之前,請進行足夠的測試。
在特權模式下使用容器時,請確保您已獲得企業(yè)安全團隊有關計劃執(zhí)行的必要批準。
在帶有kubernetes容器的Docker中使用Docker時,存在一些挑戰(zhàn)。請參閱此博客以了解更多信息。
如果您打算使用Nestybox(Sysbox),請確保已通過企業(yè)架構師/安全團隊的測試和批準。
常見問題
這是Docker問題中一些經(jīng)常問到的Docker。

在Docker中運行Docker安全嗎?
使用docker.sock和dind方法在docker中運行docker的安全性較差,因為它具有對docker守護程序的完全特權

如何在Jenkins中的docker中運行docker?
您可以使用Jenkins動態(tài)docker代理設置并將docker.sock安裝到代理容器,以從代理容器內執(zhí)行docker命令。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2014-10-11 11:30:43

CentOSDocker

2019-06-26 08:00:39

Docker容器運行命令

2021-03-18 08:01:52

Docker容器遷移

2015-12-30 09:58:49

Docker Comp容器

2016-01-11 10:29:36

Docker容器容器技術

2020-04-17 08:00:22

Docker命令普通用戶

2015-08-07 10:10:18

LinuxDocker容器

2017-02-16 10:15:43

Windows7docker變量

2021-11-28 06:47:32

Python函數(shù)開發(fā)

2021-12-24 09:58:37

DockerMySQLLinux

2014-05-07 09:56:48

Docker管理Linux容器

2019-07-08 08:59:41

Docker容器主機

2021-09-23 10:30:21

Docker RegiHarborLinux

2020-11-30 11:55:07

Docker命令Linux

2022-06-27 05:48:24

Kubernetes容器

2015-11-26 09:51:57

OpenShift 3Docker開源PaaS

2022-07-28 15:10:34

UbuntuDocker

2019-06-04 15:34:05

WindowsLinuxLinux命令

2020-11-16 15:51:54

Kubernetes

2022-01-17 21:11:32

Windows 11Windows微軟
點贊
收藏

51CTO技術棧公眾號