如何從容器內(nèi)部執(zhí)行宿主機(jī)的docker命令

1) 把docker相關(guān)的命令和依賴使用-v掛載到容器

docker run -it -d  \
--restart=always -u root \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 鏡像名稱
docker run 參數(shù)說明
--restart=always #Docker重啟后該容器也為隨之重啟
-u root          
#以root的身份去運(yùn)行鏡像(避免在容器中調(diào)用Docker命令沒有權(quán)限)
#最好使用docker用戶去運(yùn)行
-v /usr/bin/docker:/usr/bin/docker
#將宿主機(jī)的docker命令掛載到容器中
#可以使用which docker命令查看具體位置
#或者把掛載的參數(shù)改為: -v $(which docker):/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock
#容器中的進(jìn)程可以通過它與Docker守護(hù)進(jìn)程進(jìn)行通信
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
#libltdl.so.7是Docker命令執(zhí)行所依賴的函數(shù)庫
#容器中l(wèi)ibrary的默認(rèn)目錄是 /usr/lib/x86_64-linux-gnu/
#把宿主機(jī)的libltdl.so.7 函數(shù)庫掛載到該目錄即可
#可以通過whereis libltdl.so.7命令查看具體位置
#centos7位置/usr/lib64/libltdl.so.7
#ubuntu位置/usr/lib/x86_64-linux-gnu/libltdl.so.7

2) 為當(dāng)前用戶賦予執(zhí)行docker命令的權(quán)限

如果之前為docker創(chuàng)建過用戶,則需要執(zhí)行以下命令,沒有的話直接跳過

#則需要把將當(dāng)前用戶加入docker組
sudo gpasswd -a ${USER} docker

#或者將當(dāng)前用戶直接加到文件中
sudo echo "docker:x:994:${USER}" >> /etc/group

#查看docker用戶組成員
cat /etc/group |grep docker

#重新啟動(dòng)docker服務(wù)
sudo systemctl restart docker

#當(dāng)前用戶退出系統(tǒng)重新登陸
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容