最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在docker容器中調(diào)用和執(zhí)行宿主機(jī)的docker操作

 更新時(shí)間:2020年11月18日 11:14:11   作者:catoop  
這篇文章主要介紹了在docker容器中調(diào)用和執(zhí)行宿主機(jī)的docker操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

首先這個(gè)帖子,獻(xiàn)給docker新手。當(dāng)然如果你是一個(gè)老手,文中分割線后的操作方法也是一種思路。

首先說(shuō)一下,如何在docker中執(zhí)行宿主機(jī)的docker操作,我們管它叫docker in docker。

至于為什么要在docker中操作宿主機(jī)的docker,優(yōu)點(diǎn)不言而喻,你既可以將你的具體需求容器化部署,又不用直接在宿主機(jī)上安裝(假設(shè)我們沒(méi)有辦法在docker中操作宿主機(jī)的docker,那么我們只能將這樣的軟件程序直接安裝到宿主機(jī)上,這樣顯然是不利于管理和維護(hù)的)。

實(shí)現(xiàn)這種需求,其實(shí)非常簡(jiǎn)單,你只需要將docker宿主機(jī)的docker文件和docker.sock文件掛載到容器中即可,具體為:

-v /var/run/docker.sock:/var/run/docker.sock

-v /usr/bin/docker:/usr/bin/docker

你要先找到你宿主機(jī)的docker和docker.sock位置,別掛載錯(cuò)了,標(biāo)準(zhǔn)的Linux正常來(lái)說(shuō)就是上面的位置。

你在啟動(dòng)docker容器的時(shí)候,將上述兩個(gè)文件正常掛載后,就可以在docker中執(zhí)行諸如 docker images 等等這樣的命令了。

如果出現(xiàn)問(wèn)題 permission denied

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

…………………………………………………………

dial unix /var/run/docker.sock: connect: permission denied

解決方法

在容器所在的宿主機(jī)上直接給 docker.sock 777權(quán)限,命令 chmod 777 docker.sock

華麗麗的分割線

下面是針對(duì)群輝系統(tǒng),你不用太關(guān)心這個(gè)系統(tǒng)是什么,總之就是這個(gè)系統(tǒng)在docker方面有一些特有的問(wèn)題,導(dǎo)致你不能這么隨心所欲,所以我采用了一種變通的方法來(lái)處理(一種思路,拋磚引玉)先敘述一下現(xiàn)狀:

該系統(tǒng)提供了docker的UI管理工具,我們?cè)谶@個(gè)工具上可以進(jìn)行常規(guī)的掛載操作,但是如果我們想掛載上面的docker和docker.sock文件,就不行了,先看一下截圖:

說(shuō)一下圖上UI操作的局限性!

群輝官方進(jìn)行了限制,你可以選擇的文件,是不可能選擇到 /usr/ /va/ 等這樣系統(tǒng)層面的文件的,也就是我們無(wú)法直接掛載docker和docker.sock文件。

做 ln -s 軟連接是否可行?

經(jīng)嘗試,先通過(guò)ssh命令行在jenkins文件夾中創(chuàng)建2個(gè)軟連接(將docker和docker.sock進(jìn)行軟連接),然后回到群輝的UI界面,依然不能選擇(因?yàn)槿狠x直接屏蔽了軟連接文件,你是看不到的)

那么如何解決呢?

我的方法是(軟連接的方法變通一下):

1、在圖上的jenkins目錄下隨便創(chuàng)建2個(gè)文件 docker 和 docker.sock 文件(命名正確即可)

2、然后在docker點(diǎn)擊“添加文件”按鈕,正常選擇這2個(gè)文件,進(jìn)行掛載,你完全可以正常掛載并且完成其他配置,配置完畢后,暫時(shí)不要啟動(dòng)docker容器。

3、登錄ssh進(jìn)入群輝,將jenkins目錄中剛剛創(chuàng)建的2個(gè)文件刪除掉,然后把docker和docker.sock源文件創(chuàng)建軟連接到j(luò)enkins中。

root@test:cd /volume1/docker/jenkins/
root@test:rm -rf docker docker.sock
root@test:ln -s /run/docker.sock /volume1/docker/jenkins/docker.sock
root@test:ln -s /usr/local/bin/docker /volume1/docker/jenkins/docker
root@test:/volume1/docker/jenkins# ll
total 8
drwxrwxrwx+ 1 Nuggets users 96 Jun 6 11:22 .
drwxr-xr-x+ 1 root root 188 May 30 19:29 ..
lrwxrwxrwx 1 root root 21 Jun 6 11:22 docker -> /usr/local/bin/docker
lrwxrwxrwx 1 root root 16 Jun 6 11:21 docker.sock -> /run/docker.sock
drwxrwxrwx+ 1 shanhongyu users 24 Jun 1 11:07 java_home
drwxrwxrwx+ 1 Nuggets users 4476 Jun 6 11:00 jenkins_home
drwxrwxrwx+ 1 shanhongyu users 82 Jun 1 11:12 maven_home

4、然后回到群輝UI,啟動(dòng)容器,這樣就完美了。

(群輝不讓你選軟連接,但是linux和docker本質(zhì)上是可以直接掛載軟連接的)

補(bǔ)充知識(shí):使用docker在鏡像中運(yùn)行宿主機(jī)程序

docker run命令用于在新容器中運(yùn)行命令。docker run命令首先在指定的映像上創(chuàng)建一個(gè)可寫容器層,然后使用指定的命令啟動(dòng)它。

也就是說(shuō),docker run相當(dāng)于API /containers/create 和 /containers/(id)/start。

可以使用docker start重新啟動(dòng)停止的容器,并使用其所有先前的更改完整。 請(qǐng)參閱docker ps -a查看所有容器的列表。

用法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Shell

例子

分配名稱并分配偽TTY(-name,-it)

$ docker run --name test -it debian
 
root@d6c0fe130dba:/# exit 13
$ echo $?
13
$ docker ps -a | grep test
d6c0fe130dba  debian:7   "/bin/bash"   26 seconds ago  Exited (13) 17 seconds ago       test

Shell

此示例使用debian:latest映像運(yùn)行一個(gè)名為test的容器。 -it 指示Docker分配連接到容器的stdin的偽TTY; 在容器中創(chuàng)建一個(gè)交互式的bash shell。 在該示例中,bash shell通過(guò)輸入exit 13退出。該退出代碼傳遞給docker run的調(diào)用者,并記錄在測(cè)試容器的元數(shù)據(jù)中。

捕獲容器ID(-cidfile)

$ docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"

Shell

這將創(chuàng)建一個(gè)容器并打印測(cè)試到控制臺(tái)。--cidfile標(biāo)志使Docker嘗試創(chuàng)建一個(gè)新文件,并將容器ID寫入它。如果文件已經(jīng)存在,Docker將返回一個(gè)錯(cuò)誤。 Docker運(yùn)行退出時(shí),Docker將關(guān)閉此文件。

完整的容器功能(-privileged)

$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied

Shell

這將不起作用,因?yàn)槟J(rèn)情況下,大多數(shù)潛在的危險(xiǎn)內(nèi)核功能被丟棄; 包括cap_sys_admin(這是掛載文件系統(tǒng)所需的)。 但是,--privileged標(biāo)志將允許它運(yùn)行:

$ docker run -t -i --privileged ubuntu bash
root@50e3f57e16e6:/# mount -t tmpfs none /mnt
root@50e3f57e16e6:/# df -h
Filesystem  Size Used Avail Use% Mounted on
none   1.9G  0 1.9G 0% /mnt

Shell

設(shè)置工作目錄[-w]

$ docker run -w /path/to/dir/ -i -t ubuntu pwd

Shell

-w允許在目錄中執(zhí)行命令,這里是/path/to/dir/。 如果路徑不存在,則在容器內(nèi)創(chuàng)建。

為每個(gè)容器設(shè)置存儲(chǔ)驅(qū)動(dòng)程序選項(xiàng)

$ docker run -it --storage-opt size=120G fedora /bin/bash

Shell

掛載tmpfs(-tmpfs)

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image

Shell

--tmpfs標(biāo)志使用rw,noexec,nosuid,size = 65536k選項(xiàng)將一個(gè)空tmpfs裝載到容器中。

掛載卷(-v,-read-only)

$ docker run -v `pwd`:`pwd` -w `pwd` -i -t ubuntu pwd

Shell

-v標(biāo)志將當(dāng)前工作目錄裝載到容器中。 -w允許在當(dāng)前工作目錄中執(zhí)行命令,將目錄更改為pwd返回的值。所以這個(gè)組合使用容器執(zhí)行命令,但在當(dāng)前工作目錄中。

$ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash

Shell

當(dāng)綁定卷的主機(jī)目錄不存在時(shí),Docker將自動(dòng)在主機(jī)上創(chuàng)建此目錄。 在上面的示例中,Docker將在啟動(dòng)容器之前創(chuàng)建/doesnt/exists文件夾。

$ docker run --read-only -v /icanwrite busybox touch /icanwrite/here

Shell

卷可以與--read-only組合使用,以控制容器寫入文件的位置。 --read-only標(biāo)志將容器的根文件系統(tǒng)掛載為只讀禁止寫入容器的指定卷以外的位置。

以上這篇在docker容器中調(diào)用和執(zhí)行宿主機(jī)的docker操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker容器啟動(dòng)后添加端口映射

    docker容器啟動(dòng)后添加端口映射

    這篇文章主要介紹了docker容器啟動(dòng)后添加端口映射,,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 簡(jiǎn)述Docker安裝Tomcat鏡像并部署web項(xiàng)目

    簡(jiǎn)述Docker安裝Tomcat鏡像并部署web項(xiàng)目

    這篇文章主要介紹了簡(jiǎn)述Docker安裝Tomcat鏡像并部署web項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • docker常用命令操作方法

    docker常用命令操作方法

    最近幾天都在研究docker,今天給大家分享docker一些常用的命令,需要的朋友可以參考下
    2017-11-11
  • docker容器啟用ipv6地址的方法流程

    docker容器啟用ipv6地址的方法流程

    Docker默認(rèn)不開(kāi)啟IPv6配置,某些場(chǎng)景我們又需要IPv6網(wǎng)絡(luò)支持,隨著IPv6的普及,以后的使用場(chǎng)景會(huì)越來(lái)越多,所以本文給大家介紹了docker容器啟用ipv6地址方法,用ipv6地址訪問(wèn)容器方法流程、創(chuàng)建一個(gè)nginx容器用ipv6地址訪問(wèn)測(cè)試流程,需要的朋友可以參考下
    2024-08-08
  • dockerfile發(fā)布springboot項(xiàng)目實(shí)踐

    dockerfile發(fā)布springboot項(xiàng)目實(shí)踐

    使用Docker的其中一個(gè)目的,是為了更加簡(jiǎn)單,方便的部署我們編寫的服務(wù),本文主要介紹了dockerfile發(fā)布springboot項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • nexus搭建私有docker倉(cāng)庫(kù)的方法

    nexus搭建私有docker倉(cāng)庫(kù)的方法

    Nexus之前已支持了maven/npm/composer,由于docker倉(cāng)庫(kù)和前面幾個(gè)存在比較大的差異,所以我特此記錄下走過(guò)的坑,本文重點(diǎn)介紹nexus搭建私有docker倉(cāng)庫(kù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-03-03
  • Docker鏡像拉取失敗的幾種原因及解決方法

    Docker鏡像拉取失敗的幾種原因及解決方法

    本文主要介紹了Docker鏡像拉取失敗的幾種原因及解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 使用Docker配置redis sentinel哨兵的方法步驟

    使用Docker配置redis sentinel哨兵的方法步驟

    本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟

    使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Docker容器中的Postgresql備份腳本異常解決

    Docker容器中的Postgresql備份腳本異常解決

    本文基于K8S中Docker容器對(duì)postgres數(shù)據(jù)庫(kù)進(jìn)行備份的操作,但是提示報(bào)錯(cuò),報(bào)錯(cuò)信息為kubectl command not found,本文就來(lái)介紹一下報(bào)錯(cuò)信息的分析及其解決辦法,感興趣的可以了解一下
    2023-08-08

最新評(píng)論

安徽省| 鄂托克旗| 建水县| 平果县| 邵阳县| 德清县| 石屏县| 登封市| 鞍山市| 博爱县| 鹤峰县| 墨玉县| 凤阳县| 莒南县| 长汀县| 从江县| 东方市| 淮安市| 石泉县| 林西县| 镶黄旗| 侯马市| 积石山| 张家川| 民乐县| 岐山县| 铜山县| 玛纳斯县| 乌拉特中旗| 庄浪县| 泰来县| 农安县| 夏邑县| 阳城县| 启东市| 连平县| 谢通门县| 濮阳县| 攀枝花市| 京山县| 吉木萨尔县|