カップ用のDockerイメージを作成しようとしています。実行するステップの1つは、 "Listen"ディレクティブをコメントアウトすることです。サンプルのビルドからこの出力は、問題を示していますsedのインライン置換がDockerfileから機能しない
Step 8 : RUN sed "s/^Listen /#Listen /" /etc/cups/cupsd.conf | grep Listen
---> Running in 6b9dfeeaec7a
#Listen localhost:631
#Listen /var/run/cups/cups.sock
---> 1737a534589d
Step 9 : RUN sed -i "s/^Listen /#Listen /" /etc/cups/cupsd.conf
---> Running in aacd768eb94c
---> dbe12c2073ef
Step 10 : RUN grep "Listen" /etc/cups/cupsd.conf
---> Running in 650b27ecf7c4
Listen localhost:631
Listen /var/run/cups/cups.sock
---> bf03b9f5de35
Successfully built bf03b9f5de35
なぜ完全grep
仕事にパイプますsed
の最初の呼び出しは行いますが、-i
フラグを有する第二には、変更しませんか?
コンテナを対話的に実行して(docker run -it cups sh
)、コマンド(sed -i "s/^Listen /#Listen /" /etc/cups/cupsd.conf
)をコピー&ペーストすると、期待どおりに変更されます。
ここでフルDockerfileです:
FROM ubuntu:16.04
RUN apt-get --quiet update && apt-get --quiet --assume-yes --allow-downgrades --allow-remove-essential --allow-change-held-packages dist-upgrade
# Install cups
RUN apt-get install --quiet --assume-yes --allow-downgrades --allow-remove-essential --allow-change-held-packages cups
VOLUME /etc/cups/
EXPOSE 631
RUN apt-get install --quiet --assume-yes --allow-downgrades --allow-remove-essential --allow-change-held-packages less vim
RUN sed -i "s/^Listen /#Listen /" /etc/cups/cupsd.conf
ビルドコマンドは次のとおりです。docker build --tag cups:test .
Runコマンドは次のとおりです。docker run -it cups:test bash
docker info
出力:
Containers: 9
Running: 6
Paused: 0
Stopped: 3
Images: 61
Server Version: 1.12.1
Storage Driver: aufs
Root Dir: /mnt/storage/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 65
Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: host bridge null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: apparmor
Kernel Version: 4.4.0-31-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 3.555 GiB
Name: servy
ID: LJZV:A2VY:BZPY:HHQX:DWSP:IAMK:XI43:Q7BA:YKVU:ONQX:VBHJ:GXRT
Docker Root Dir: /mnt/storage/var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Insecure Registries:
127.0.0.0/8
出力から:
Docker version 1.12.1, build 23cf638
おかげ
完全なDockerfileを投稿してください。私はあなたの問題を再現しようとしましたが、私にとってはインライン置換が働きます。 –
また、 'docker info'の出力が参考になります。 –
ありがとうございました!私は 'docker info'と問題を再現する完全なDockerfileを追加しました。私は実際にこれを取得し、ビルドディレクトリに完全な設定ファイルを置くことで実行していますが、イメージに卸売りコピーされますが、 'sed 'を使ってビルドしていないのはなぜか不思議です。彼らがあまりにも広範でない限り、configファイルの特定の編集を列挙することは、パッケージメンテナーのconfigファイルのバージョンにどのような変更を加えたのかを正確に文書化することだと思います。私はそれについてもコメントを使うことができると思う。 – Dave