如何從容器內部執行宿主機的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命令執行所依賴的函數庫
# 容器中library的默認目錄是 /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) 爲當前用戶賦予執行docker命令的權限

若是以前爲docker建立過用戶,則須要執行如下命令,沒有的話直接跳過linux

# 則須要把將當前用戶加入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

# 當前用戶退出系統從新登錄
複製代碼
相關文章
相關標籤/搜索