「Dockerを基本から学ぶ」の感想・備忘録

スポンサーリンク

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で複数のコンテナを起動する

  1. docker-compose.ymlファイルを作成
  2. 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

コメント