docker 並設定連接

docker 並設定連接

我從公共儲存庫中提取了一個容器,並且想向其中安裝一個套件。但沒有成功...請問有什麼幫助嗎?如何設定 docker 與套件儲存庫的連接?

[root@adf2 adf2_umb_docker]# docker ps -l

容器 ID 映像指令建立狀態連接埠名稱

8a9a015c5301 devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 “bash” 8 分鐘前 8 分鐘 admiring_shirley

[root@adf2 adf2_umb_docker]# docker run devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 bash -c "apt-get -y install vim"

正在閱讀包裝清單...

建構依賴樹...

正在讀取狀態資訊...

E: 無法找到 vim 包

管理員從防火牆通知我此日誌:

8 月 23 日 23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype --dst-type LOCAL -j DOCKER ! --dst 127.0.0.0/8' 失敗:iptables:沒有該名稱的鏈/目標/匹配。

8 月23 日23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' 失敗:iptables:沒有鏈/目標/匹配那個名字。

8 月 23 日 23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION' 失敗:iptables:無鏈/目標/匹配姓名。

8 月 23 日 23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE' 失敗:iptables:沒有該名稱的鏈/目標/匹配。

8月23日23:02:08 adf2firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN'失敗:iptables:錯誤規則(執行匹配規則)存在於該鏈中嗎?

8月23日23:02:08 adf2firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP'失敗:iptables:錯誤規則(執行匹配規則)存在於該鏈中嗎?

8 月23 日23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -jip ACCEPT' 失敗:iptables:錯誤規則(確實如此)該鏈中存在匹配規則嗎?

8 月 23 日 23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t 過濾器 -C FORWARD -i docker0 ! -o docker0 -j ACCEPT' 失敗:iptables:錯誤規則(該鏈中是否存在符合規則?)。

8 月23 日23:02:08 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED - ACABLPT'失敗: iptables:錯誤規則(該鏈中是否存在匹配規則?)。

8 月23 日23:02:09 adf2 firewalld[5882]:警告:COMMAND_FAILED:'/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' 失敗:iptables:沒有鏈/目標/匹配那個名字。

答案1

這不是在 Docker 中新增套件的方式。使用您的方法讓容器實例向自身添加一個套件。這也造成了未來的問題:

  • 如何備份這個容器
  • 如有必要,如何重建它

正確的方法是使用 Dockerfile 派生映像:

FROM devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi/18.4
RUN apt-get -y install vim

然後您使用以下命令創建圖像:

docker build -t "TheDerivedImageName" $TheDirectpryWithTheDockerfFile

並在必要時透過建立容器實例來運行映像:

docker run TheDerivedImageName

Dockerfile 和關聯的檔案是主機檔案:它們可以備份、放入原始碼控制系統(git...)、與其他人共用...

此外,在 docker 映像中安裝 Vim 是不必要的,並且暗示您可能沒有正確使用 Docker。如果您需要在容器中建立/編輯文件,您可以:

  • COPY在建置時使用Dockerfile 中的語句將它們放入映像中
  • 使用下列命令與容器共用主機上的檔案或目錄“綁定掛載”,並從主機編輯它們。

相關內容