【Docker】Docker fileのCOPY命令で設定ファイルを保存【入門】
Docker fileのCOPY命令ADD命令
COPY命令はホストマシン上のファイルをイメージ内にコピーする命令です。
nginxイメージ内に修正した設定ファイルの内容を保存していきたいと思います。
まずはnginxコンテナを立ち上げていきます。
$ docker run --name tmp-nginx --rm -d nginx 960e083f54488cf5815e4bd3bb6830b4135d27e2bfb6bbfadd28b7e8dcf4be5e
-rm オプションはdocker imagestop時にコンテナを自動削除するオプションです。
コンテナからホストへのコピー
$docker cp <コンテナID>:/etc/my.cnf my.cnf
ホストからコンテナへのコピー
$docker cp my.cnf <コンテナID>:/etc/my.cnf
では、やってみます
$ docker cp tmp-nginx:/etc/nginx/conf.d/default.conf ./
$ ls
default.conf
copyできました。
では設定ファイルに修正を加えます。
$ vim default.conf #port番号を80から8080に変更します。 server { listen 8080; server_name localhost; ... }
以下のようなDockerfileを作成して、COPY命令を書きます。
nginxのイメージを元にしてCOPY命令を書きます。
$ cat Dockerfile FROM nginx:latest COPY default.conf /etc/nginx/conf.d/default.conf
ではbuildします。
$ docker build -t nginx:ver1 . Sending build context to Docker daemon 4.096kB Step 1/2 : FROM nginx:latest ---> dbfc48660aeb Step 2/2 : COPY default.conf /etc/nginx/conf.d/default.conf ---> 9179d15926aa Successfully built 9179d15926aa Successfully tagged nginx:ver1
build成功。これを元にコンテナを起動します。
$ docker run --name web -p 8080:8080 --rm nginx:ver1 172.17.0.1 - - [02/Nov/2018:07:32:24 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36" "-"
8080ポートで接続できました。