Docker勉強しよう②
バインドマウント
- nginxに静的なコンテンツをマウントする
$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
-v: {ホスト側のディレクトリ}:{コンテナ側のマウントポイント}:{option}
- ro は readonlyの略称
c.f. docker hub -nginx
- 適当にindex.htmlを作成してデタッチモードかつ8000:80番ポートを指定してコンテナ起動
$ docker run --name test-nginx -v /path/to/docker_practice/html/:/usr/share/nginx/html:ro -d -p 8000:80 nginx
- http://localhost:8000/ アクセスしてindex.htmlが表示されることを確認
- コンテナ側からホストマシンのファイルにアクセスできてしまうことを意味しているので非推奨らしい
docker cp
- ホストマシンのファイルをコンテナ内にコピーする場合
docker cp {ホストマシンのファイルパス} {コンテナ名/ID}:{コンテナ内のファイルパス}
- コンテナ内のファイルをホストマシンにコピーする場合
docker cp {コンテナ名/ID}:{コンテナ内のファイルパス} {ホストマシンのファイルパス}
- nginxの設定ファイルのパスを忘れたのでコンテナ内に入ってパスを確認
$ docker exec -i -t test-nginx bash
- /etc/nginxの中にあることを確認
root@a51e969bdb54:/etc/nginx# pwd /etc/nginx
- 適当なディレクトリにcopyしてみる
$ docker cp test-nginx:/etc/nginx/nginx.conf /Users/user/docker_practice/
- Dockerfileでホストマシン側のnginx.confをコンテナ側にcopyする場合はこうする
FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf