公開イメージをpull
公開イメージ+Dockerfileをbuildしオリジナルイメージを作成
オリジナルイメージをrunしてコンテナとして起動
(コンテナは一つのプロセスとして動作している)
Dockerコマンド
ビルド:
ベースイメージに対して機能を加えて独自のイメージを作り出す
docker build . -t イメージ名
カレントディレクトリのdockerfileを参照
tオプションで名前を指定する。
コンテナ実行:
docker run イメージ名
Dockerfileファイル命令
FROM:
ベースイメージの設定
MAINTAINER:
製作者
ENV:
環境変数
コンテナ用の環境変数
ARG:
環境変数
ビルド用(Dockerfile内)一時的な環境変数
WORKDIR:
作業ディレクトリ
RUN:
コマンド実行(イメージ作成時)
CMD:
コマンド実行(コンテナ実行時)
EXPOSE:
ポート解放
(docker run -p のみでポートは開く)
USER:
ユーザー切り替え
DockerCompose.yml命令
設定値は「:」
文字列は「’」「”」
複数の値は「-」
コメントは「#」
Docker Compoesごとに独立したネットワークになる。
version:
バージョン
services:
コンテナの名前定義
volumes:
コンテナが利用するボリューム定義
networks:
コンテナが利用するネットワーク定義
・サービスの命令
iamge
利用するイメージを指定する。
Dockerfileを利用する場合、build
(ymlから相対パスで指定)
volumes
ホスト:コンテナと記述する。
restart
docker run -d –restart
と同じ
depends_on
compose up/down
したときに指定したサービスが先に起動/終了するようになる。
environment
環境変数設定。
ports
ポートマッピング(ホスト:コンテナ)
(docker run -p xxx:xxxと同じ)
tty
docker run -it
の-tにあたる設定。
Volumes
バインドとボリュームがある。
ボリュームの場合、dockerエンジンの管理領域に永続化ストレージができる。
・ボリュームマウント
volumes:
db_data:
ボリューム(パス指定のみ)
services:
wordpress:
volumes:
- /var/www/html
WSLでの位置
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\ランダム\_data
名前付きボリューム
services:
wordpress:
volumes:
- aaa:/var/www/html
volumes:
aaa:
WSLでの位置
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\wordpressfolder_aaa\_data
・バインド
services:
wordpress:
volumes:
- ./html:/var/www/html
.はdocker-compose.ymlのあるパスを指す。
WindowsのDockerDesktopの場合、
– C:\Users\mail\Desktop\html:/var/www/html
のように指定することもできる。
(~を利用するとWindowsからパスが見えなくなる)
WordPressを実行してみる
Win10でGUIのDockerDesktopを利用。
・docker-compose.yml作成
適当なフォルダを作成し、その中に、
docker-compose.yml
を作成する。
(フォルダ名がContainer/Apps名になる)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: passw0rd MYSQL_DATABASE: wp_db MYSQL_USER: wp_user MYSQL_PASSWORD: 1234 wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wp_db WORDPRESS_DB_USER: wp_user WORDPRESS_DB_PASSWORD: 1234 volumes: db_data: |
・Volumes,Containers/Apps作成
作成したフォルダに移動し、
docker-compose up -d
を実行する。
・docker-compose.ymlを修正した場合
Volumes,Containers/Appsをクリアしてコマンドを再実行する。
(docker-compose.ymlの場所を変えれば別のVolumes,Containers/Appsとして作成される)
・ブラウザのアクセス
http://localhost:8000
・エクスプローラのアクセス
(パス指定のみした場合のボリューム)
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
・シェルのアクセス
docker ps
一覧を確認する。
docker exec -it wordpress1-wordpress-1 /bin/bash
接続する。
exit
終了する。
・未使用ボリューム一括削除
docker volume prune
Mattermostを実行してみる
git config –global core.autocrlf input
WSLで利用する場合、Winでcloneすると改行コードが変換されてしまうため。
確認
git config core.autocrlf
・評価版の場合
docker run –name mattermost-preview -d –publish 8065:8065 mattermost/mattermost-preview
***
本番の場合
・クローン
https://github.com/mattermost/mattermost-docker.git
・docker-compse.yamlを編集
args:
– edition=team
のコメントを外す。
・コンテナ作成
docker-compose up -d
Apache/MySQL/PHPを実行してみる
・フォルダ構成
php7.2-apache
└dockerfile
docker-compose.yml
・Dockerfile
FROM php:7.2-apache
RUN docker-php-ext-install pdo_mysql
・コマンド
docker-compose.ymlでビルドされるが、
もし単体でDockerfileをビルドする場合、
docker build . -t php7.2
・docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
version: '3' services: php: build: php7.2-apache image: php7.2 volumes: - ./html:/var/www/html ports: - 8000:80 container_name: lamp-php7.2 mysql: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=abc123 - MYSQL_DATABASE=test_db - MYSQL_USER=test_user - MYSQL_PASSWORD=abc123 container_name: lamp-mysql5.7 command: mysqld --character-set-server=utf8mb4 |
・コマンド
docker-compose up -d
・イメージの名前を指定する場合
services:
fuga:
build: ここでdockerfileのフォルダ名
image: 付けたい名前
(pullはされない)
コマンドで実行
ほぼDockerDesktopで作業しているが一部コマンドでやる場合。
・イメージ取得
プル
docker pull node
一覧
docker images
・コンテナ作成
(docker run [オプション] image [コマンド])
docker run -it –name container -p 81:80 -v C:\Users\mail\Desktop\test:/home node /bin/bash
–rm 利用後コンテナ削除
–name 作成するコンテナに名前をつける
-it 中に入れる
-d バックグラウンドで起動
-p ポートマッピング
-v バインド(ホスト:コンテナ)
ここでのコマンドは/bin/bashとなる。最初に実行するコマンド。