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

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

2) 為當前用戶賦予執(zhí)行docker命令的權限

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

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

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

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

#重新啟動docker服務
sudo systemctl restart docker

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

友情鏈接更多精彩內容