apt-get 命令在 docker 容器中不起作用

eca*_*ard 6 ubuntu docker dockerfile

我正在尝试在 docker 映像中安装一些软件包,但 apt-get 命令似乎不起作用......

当我在基于 ubuntu:16.04 的容器中尝试此操作时

apt-get update && apt-get install -y openssh-server
Run Code Online (Sandbox Code Playgroud)

我懂了:

Err:1 http://archive.ubuntu.com/ubuntu zesty InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:2 http://security.ubuntu.com/ubuntu zesty-security InRelease
  Temporary failure resolving 'security.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu zesty-updates InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu zesty-backports InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Reading package lists... Done
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/zesty-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/zesty-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package openssh-server
Run Code Online (Sandbox Code Playgroud)

我尝试在这样的 Dockerfile 中执行此操作

FROM ubuntu:16.04
RUN apt-get update && apt-get -y install openssh-server
CMD bin/bash
Run Code Online (Sandbox Code Playgroud)

并用

sudo docker build -t imagetest .
Run Code Online (Sandbox Code Playgroud)

但我得到了这个:

Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM ubuntu:16.04
 ---> 00fd29ccc6f1
Step 2/3 : RUN apt-get update && apt-get install openssh-server
 ---> Running in ee011c1239d0
Err:1 http://archive.ubuntu.com/ubuntu xenial InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:2 http://security.ubuntu.com/ubuntu xenial-security InRelease
  Temporary failure resolving 'security.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Reading package lists...
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package openssh-server
The command '/bin/sh -c apt-get update && apt-get install openssh-server' returned a non-zero code: 100
Run Code Online (Sandbox Code Playgroud)

我在官方文档和一些论坛上进行了搜索,但我找到的答案都没有帮助我并且已经过时了...

有些人说要重启docker服务,但对我不起作用.. 其他人说要使用apt-get update -qq,但它也不起作用...

所以我来这里直接询问,并有一个最近的答案。

谢谢。

yam*_*enk 6

如果 apt-get 在虚拟机上工作正常,您可以使用网络主机模式构建容器。

docker build --network=host ...
Run Code Online (Sandbox Code Playgroud)