kindle本「Dockerを基本から学ぶ」のまとめ。
点数
77点
感想
短い内容だが、わかりやすかった。
最終章のAWS ECSの説明は、もう少し丁寧に書いて欲しかった。
Docker Hubからイメージを取得する
docker image pull httpd
イメージを取得しなくても、docker container run
だけでイメージ取得⇒コンテナ起動、まで行われる。
コンテナ起動
docker container run -d -p 8081:80 httpd
データの永続化
docker container run -d -p 8081:80 -v /usr/hoge/htdocs:/usr/local/apache2/htdocs/ httpd
※ 相対パスにしたい場合は$(PWD)/htdocs
のようにする
終了時にコンテナを削除
一時的にプログラムをコンテナで確認したい場合などは–rmを付ける。
docker container run -v ./hoge:/data/hoge/ -it -rm python /bin/bash
⇒exitでターミナルを終了するとコンテナも削除される。
CentOSでApacheを動かすDockerfile
FROM centos
RUN yum -y update
RUN yum -y install httpd
COPY htdocs/ /var/www/html
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
- イメージ作成:
docker build -t test/apache:1.0 .
- コンテナ起動:
docker container run -d -p7401:80 --name centos-test test/apache:1.0
Docker Composeで複数のコンテナを起動する
- docker-compose.ymlファイルを作成
docker-compose up -d
でコンテナ起動
version: '3'
services:
web:
build: ./nginx
ports:
- '8080:80'
links:
- php-fpm
volumes:
- ./data:/usr/share/nginx/html
php-fpm:
build: ./php-fpm
links:
- db
volumes:
- ./data:/usr/share/nginx/html
db:
build: ./mysql
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: user
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: sample
- web:
コンテナ名。 - build: ./nginx
./nginx/Dockerfileからイメージを作成。 - links:
– php-fpm
コンテナ名を指定することで通信が可能となる。
例)webコンテナでping php-fpm
とするとRelyが返ってくる。
今回の例では、./nginx/DockerfileでADD conf/default.conf /etc/nginx/conf.d/default.conf
として ./nginx/conf/default.confでfastcgi_pass php-fpm:9000;
としているので、php-fpmのポート9000番に対してphpファイルをProxyしている。
mysqlイメージ
以下の記述でルートパスワード、ユーザー、ユーザーのパスワード、データベース名、を指定している。
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: user
MYSQL_PASSWORD: userpass
MYSQL_DATABASE: sample
以下のサイトに説明がある。
https://hub.docker.com/_/mysql