例) 設定変更したhttpd.confをapacheコンテナに組み込みたい
1) httpd.confファイルの準備
組み込みたいhttpd.confをWindowsの任意場所に置く (C:\Users\user\httpd)
このファイルは Listen を "80" から "8080" へ変更している
2) Dockerfileの準備
Windowsの任意場所にDockerfileを新規作成する
今回は C:\Users\user\docker\Dockerfile として作成した
このファイルに記述するのは以下2つ
・ベースとなるコンテナイメージの指定
・準備したhttpd.confをコンテナにコピー
今回の場合、
・ベースとなるコンテナイメージは "httpd:latest"
・httpd.confは "C:/Users/user/docker/httpd/httpd.conf" から コンテナの "/usr/local/apache2/conf/httpd.conf" へコピー
となるので Dockerファイルは以下の記述となる
FROM httpd:latest COPY C:/Users/user/httpd/httpd.conf /usr/local/apache2/conf/httpd.conf
ファイル形式はUTF-8とした
3) コンテナイメージの作成
"docker build"コマンドでコンテナイメージを作成する
書式:"docker build -t イメージ名 Dockerfileの場所"
今回は
・イメージ名 "test"
・Dockerfileの場所 "c:\Users/user/docker/"
なので、
"docker build -t test c:/Users/user/docker/"
を実行
結果はエラー
$ docker build -t test c:/Users/user/docker/ Sending build context to Docker daemon 2.048kB Step 1/2 : FROM httpd:latest ---> 9d2a0c6e5b57 Step 2/2 : COPY C:/Users/user/httpd/httpd.conf /usr/local/apache2/conf/httpd.conf COPY failed: stat /mnt/sda1/var/lib/docker/tmp/docker-builder457226936/C:/Users/user/httpd/httpd.conf: no such file or directory
DockerfileのCOPYコマンドで失敗している
コピー元のパス指定はできないらしい?
参考) https://ja.stackoverflow.com/questions/57100/windows-for-docker-で-docker-fileのcopyできない
ということでDockerfileを修正(コピー元のパスを削除)
FROM httpd:latest COPY httpd.conf /usr/local/apache2/conf/httpd.conf
httpd.confのパスに移動してからdocker buildを行う
"cd /d c:/Users/user/httpd"
"docker build -t test c:/Users/user/docker/"
結果は、同じエラーが発生
Dockerfileをshift-jisへ変更 → 同じエラー
以下記事を見つけた
https://www.it-swarm-ja.tech/ja/python/copyのdockerイメージを作成できませんでした:stat-var-lib-docker-tmp-dockerbuilderエラー/835682796/
コピーするファイルはDockerfileと同じディレクトリに置く必要あり?
C:\Users\user\docker\Dockerfile を C:\Users\user\httpd へ移動
Dockerファイルをカレントディレクトリに移動したので docker build コマンドを以下のように変更
"docker build -t test ."
SECURITY WARNINGが出ているが成功
$ docker build -t test . Sending build context to Docker daemon 23.55kB Step 1/2 : FROM httpd:latest ---> 9d2a0c6e5b57 Step 2/2 : COPY httpd.conf /usr/local/apache2/conf/httpd.conf ---> 6c570362bd2f Successfully built 6c570362bd2f Successfully tagged test:latest SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
警告の意味:
セキュリティ警告:Windows以外のDockerホストに対してWindowsからDockerイメージを構築しています。 ビルドコンテキストに追加されたすべてのファイルとディレクトリには、「-rwxr-xr-x」権限が付与されます。 機密性の高いファイルとディレクトリの権限を再確認してリセットすることをお勧めします。
docker imagesコマンドでtestが作成されたことを確認
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest 6c570362bd2f 48 seconds ago 166MB httpd latest 9d2a0c6e5b57 3 days ago 166MB centos latest 831691599b88 5 weeks ago 215MB
作成したdockerイメージ(ポート8080へ変更したもの)を起動
"docker run -it --pm -p 8080:8080 test"
ブラウザで http://192.168.99.102:8080 へアクセス
"It works!"と表示されればOK
学習メモ, Docker
0 件のコメント:
コメントを投稿