Sed 在构建 Docker 图像时找不到文件
Sed cannot find file while building Docker image
我正在尝试构建我的第一个 Docker 图像。我的图像基于 centos:7
。但是,Docker 图像卡在这个命令中:
RUN /usr/bin/sed -e 's/127.0.0.1:9000/9000/' \
-e '/allowed_clients/d' \
-e '/catch_workers_output/s/^;//' \
-e '/error_log/d' \
-i /etc/php-fpm.d/www.conf
这是我在构建图像时得到的:
Step 5 : RUN /usr/bin/sed -e 's/127.0.0.1:9000/9000/' ??????? -e '/allowed_clien
ts/d' ??????? -e '/catch_workers_output/s/^;//' ??????? -e '/error_log/d' ??????
? -i /etc/php-fpm.d/www.conf
---> Running in 660063647d37
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
INFO[0000] The command [/bin/sh -c /usr/bin/sed -e 's/127.0.0.1:9000/9000/' ????
??? -e '/allowed_clients/d' ??????? -e '/catch_workers_output/s/^;//' ??????? -e
'/error_log/d' ??????? -i /etc/php-fpm.d/www.conf] returned a non-zero code: 2
然而,当我连接到构建一半的镜像时,文件确实存在:
vagrant@vagrant-ubuntu-trusty-64:/vagrant/docker$ docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
<none> <none> c34b6e6456bd 2 hours ago
295.7 MB
centos 7 2b8d6139a545 2 days ago
212.1 MB
centos centos7 2b8d6139a545 2 days ago
212.1 MB
centos latest 2b8d6139a545 2 days ago
212.1 MB
vagrant@vagrant-ubuntu-trusty-64:/vagrant/docker$ docker run -it --rm c34b6e645
6bd
[root@b61b0154b97b /]# ls /etc/php-fpm.
php-fpm.conf php-fpm.d/
[root@b61b0154b97b /]# ls /etc/php-fpm.d
www.conf
我还验证了 sed
位于 /usr/bin/sed
。事实上,我已将该命令粘贴到我的会话中并看到它完成了它的工作。
我做错了什么?
如果我 运行 在我的主机上使用你的命令,我会得到同样的结果;看起来你的命令在换行符方面格式不正确。
我会删除所有斜线和新行并检查它是否有效。然后手动将它们一次一个地添加回去,而不是剪切和粘贴。
错误信息误导了我。我发现在复制和粘贴时,tab
字符没有正确粘贴。
我用 space
替换了那些字符,问题就解决了。
我正在尝试构建我的第一个 Docker 图像。我的图像基于 centos:7
。但是,Docker 图像卡在这个命令中:
RUN /usr/bin/sed -e 's/127.0.0.1:9000/9000/' \
-e '/allowed_clients/d' \
-e '/catch_workers_output/s/^;//' \
-e '/error_log/d' \
-i /etc/php-fpm.d/www.conf
这是我在构建图像时得到的:
Step 5 : RUN /usr/bin/sed -e 's/127.0.0.1:9000/9000/' ??????? -e '/allowed_clien
ts/d' ??????? -e '/catch_workers_output/s/^;//' ??????? -e '/error_log/d' ??????
? -i /etc/php-fpm.d/www.conf
---> Running in 660063647d37
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
/usr/bin/sed: can't read ???????: No such file or directory
INFO[0000] The command [/bin/sh -c /usr/bin/sed -e 's/127.0.0.1:9000/9000/' ????
??? -e '/allowed_clients/d' ??????? -e '/catch_workers_output/s/^;//' ??????? -e
'/error_log/d' ??????? -i /etc/php-fpm.d/www.conf] returned a non-zero code: 2
然而,当我连接到构建一半的镜像时,文件确实存在:
vagrant@vagrant-ubuntu-trusty-64:/vagrant/docker$ docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
<none> <none> c34b6e6456bd 2 hours ago
295.7 MB
centos 7 2b8d6139a545 2 days ago
212.1 MB
centos centos7 2b8d6139a545 2 days ago
212.1 MB
centos latest 2b8d6139a545 2 days ago
212.1 MB
vagrant@vagrant-ubuntu-trusty-64:/vagrant/docker$ docker run -it --rm c34b6e645
6bd
[root@b61b0154b97b /]# ls /etc/php-fpm.
php-fpm.conf php-fpm.d/
[root@b61b0154b97b /]# ls /etc/php-fpm.d
www.conf
我还验证了 sed
位于 /usr/bin/sed
。事实上,我已将该命令粘贴到我的会话中并看到它完成了它的工作。
我做错了什么?
如果我 运行 在我的主机上使用你的命令,我会得到同样的结果;看起来你的命令在换行符方面格式不正确。
我会删除所有斜线和新行并检查它是否有效。然后手动将它们一次一个地添加回去,而不是剪切和粘贴。
错误信息误导了我。我发现在复制和粘贴时,tab
字符没有正确粘贴。
我用 space
替换了那些字符,问题就解决了。