Debian

無法從 debian 安裝 Docker 包,但可以從 ubuntu 安裝

  • September 20, 2015

Debian jessie 沒有官方的 Docker 軟體包。有一個 backport,我已經安裝了它,但是在啟動時,它會為執行容器等關鍵任務發出錯誤。

網際網路上有一個建議的解決方案說(關於 Debian docker 安裝):添加deb https://get.docker.com/ubuntu docker main到 sources.list 然後:

sudo apt-get update
sudo apt-get install lxc-docker

看來(我在評論中讀過它)Docker 保證他們的包在 Ubuntu 和 Debian 上都執行。

事實上,這個安裝在我的 Ubuntu 14.04 筆記型電腦上執行良好,並且 docker 執行容器也很好。

但是,當使用 Debian jessie 在伺服器上嘗試相同的操作時,我無法安裝 docker:

myuser@srv:~$ sudo apt-get install lxc-docker
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package lxc-docker

我還嘗試了包名 docker.io,它是過時的 docker 包的名稱:

myuser@srv:~$ sudo apt-get install docker.io
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package docker.io is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'docker.io' has no installation candidate

知道有什麼問題嗎?


這是我放入的 docker.list 文件/etc/apt/sources.list.d

deb https://get.docker.com/ubuntu docker main

權限看起來很正常:

$ ls -l /etc/apt/sources.list.d/docker.list
-rw-r--r-- 1 root root  46 Sep 20 17:26 docker.list

正如建議的那樣,我安裝了(再次) docker.io backport 包,它給了我錯誤:

無法啟動容器:

myuser@srv:/etc/apt/sources.list.d$ sudo docker run --rm hello-world
FATA[0000] Post http:///var/run/docker.sock/v1.18/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

sudo apt-get remove但更糟糕的是,現在docker.io 反向移植包是不可能的:

Removing docker.io (1.6.2~dfsg1-1~bpo8+1) ...
[....] Stopping Docker: dockerstart-stop-daemon: warning: failed to kill 23321: No such process
1 pids were not killed
No process in pidfile '/var/run/docker-ssd.pid' found running; none killed.
invoke-rc.d: initscript docker, action "stop" failed.
dpkg: error processing package docker.io (--remove):
subprocess installed pre-removal script returned error exit status 1
dpkg: error while cleaning up:
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
docker.io
E: Sub-process /usr/bin/dpkg returned an error code (1)

並且包裹永遠不會被移除。這就是我昨天重新安裝 debian 的原因,並選擇給面向 docker 的解決方案一個機會,使用 deb https://get.docker.com/ubuntu docker main

這可能與此問題有關:docker can’t be uninstalled if it never working


感謝上面的連結,禁止刪除 docker.io 包的罪魁禍首在預刪除腳本中:

/var/lib/dpkg/info/docker.io.prerm

我已經修改了它,評論了試圖這樣做的 3 行docker stop

# Automatically added by dh_installinit
#if [ -x "/etc/init.d/docker" ] && [ "$1" = remove ]; then
#   invoke-rc.d docker stop || exit $?
#fi

包裹被很好地移除了。(昨天因為這個,我真的是個野蠻人重新安裝debian……)

我很確定 Debian jessie 有一個docker.io軟體包,但你必須啟用jessie-backports.

要啟用jessie-backports,只需在您的中添加以下行/etc/apt/sources.list

deb http://http.debian.net/debian jessie-backports main

然後,更新您的軟體包庫:

$> sudo apt-get update

現在,您應該能夠安裝該docker.io軟體包:

$> sudo apt-get install docker.io

完成後,您可以通過以下方式檢查一切是否正常:

$> sudo docker run --rm hello-world

您可以在此頁面上找到我在此處解釋的內容的摘要。

引用自:https://unix.stackexchange.com/questions/230838