我正在接近Docker。我创建了一个图像debootstraping Debian Jessie,我想将contrib
部分添加到APT源文件中。
/etc/apt/sources.list
内容为:
$ docker run some/image cat /etc/apt/sources.list
deb http://debian.fastweb.it/debian jessie main
deb http://debian.fastweb.it/debian jessie-updates main
deb http://security.debian.org/ jessie/updates main
我希望他们成为:
deb http://debian.fastweb.it/debian jessie main contrib
deb http://debian.fastweb.it/debian jessie-updates main contrib
deb http://security.debian.org/ jessie/updates main contrib
所以我运行了这个命令:
docker run some/image sed -i 's/main/main contrib/g' /etc/apt/sources.list
哪个退出没有错误;但它不会更新/etc/apt/sources.list
内容:
$ docker run some/image cat /etc/apt/sources.list
deb http://debian.fastweb.it/debian jessie main
deb http://debian.fastweb.it/debian jessie-updates main
deb http://security.debian.org/ jessie/updates main
答案 0 :(得分:3)
您没有更改图像。您根据图像启动了一个容器。然后运行sed命令并更改文件内容。检查docker ps -a
以查看刚刚关闭的容器的ID。如果您使用docker cp
提取文件,您应该看到它已按预期更改(假设您的sed命令正常)。
您还可以创建Dockerfile
FROM some/image
RUN sed -i 's/main/main contrib/g' /etc/apt/sources.list
# this command is just temporary, you probably are going to do something else
CMD cat /etc/apt/sources.list
并运行新图像docker run some/new-image
以获得预期的输出。
结论 - 您可能希望在原始映像Dockerfile中运行sed命令。