docker运行sed不起作用
我正在接近Docker 。 我创build了一个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
你没有改变图像。 你根据图像启动了一个容器。 然后你运行你的sed命令并更改文件内容。 检查docker ps -a
以查看刚刚closures的容器的ID。 如果你使用docker cp
来提取你的文件,你应该看到它已经按预期改变了(假设你的sed命令正常)。
你也可以创build一个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命令。