如何在Ubuntu Docker镜像内运行wget?

128

我正在尝试在Ubuntu容器中下载Debian软件包,步骤如下:

sudo docker run ubuntu:14.04 wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.8.2-omnibus.1-1_amd64.deb

我明白了

exec: "wget": executable file not found in $PATH

我已经按照以下步骤在docker中安装了wget

I've already installed wget with docker as follows:

run ubuntu:14.04 apt-get install wget

我怎样才能下载文件呢?

3个回答

189

您需要先安装它。创建一个新的Dockerfile,并在其中安装wget:

FROM ubuntu:14.04
RUN  apt-get update \
  && apt-get install -y wget \
  && rm -rf /var/lib/apt/lists/*

然后,构建该镜像:

docker build -t my-ubuntu .

最后,运行它:
docker run my-ubuntu wget https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.8.2-omnibus.1-1_amd64.deb

13
每个docker run命令都在独立的容器中运行,因此,你在第一个容器中安装的任何内容都不会出现在第二个容器中。你可能需要进一步了解什么是容器以及它们是如何工作的。 - Thomas Orozco
1
你如何将上一次运行的结果文件转发到本地文件系统? - hhh
它运行良好,但我想问一下包版本的问题。否则,它无法通过Docker Lint。 - lazysnoozer
2
嗨@ThomasOrozco。你为什么要删除这个文件夹/var/lib/apt/lists? - Yairopro

58

最近我遇到了这个问题,使用apt install wget 没有找到任何内容。原来是因为没运行过 apt update

apt update
apt install wget

在与同事讨论后,我们猜测 apt update 可能不会运行,以节省 Docker 镜像的时间和空间。


1
我通过简单地运行docker pull ubuntu命令来安装Ubuntu容器,但是后来在bash中遇到了“apt not found”问题。这个方法对我有效。谢谢。 - veritas
太有帮助了!我在CentOS7的Docker容器中实现了Ping命令。谢谢! - Robi Wan Kenobi

6

如果您直接运行Ubuntu容器而没有本地Dockerfile,您可以通过ssh进入容器,并通过输入su然后apt-get install -y wget来启用root控制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接