docker で開発環境を構築してみます。
Contents
docker
docker は、コンテナ型の仮想化環境を構築、共有、実行することができるプラットフォームになります。
docker のインストール (Mac)
Docker Descktop for Mac から Docker.dmg ファイルをダウンロードします。
インストールが終わったら Docker アプリケーションを実行します。
docker のインストール (Windows)
Docker for Windows から Docker for Windows Installer.exe ファイルをダウンロードしてインストールします。
Windows では Hyper-V を使用する為、こちらを有効にする必要があります。
無効になっていると、このようなエラーが表示されます。
Hyper-V は windows 10 home エディションでは使えませんので、VM を構築して Linux 上などで構築する必要があります。今回は Hyper-V を使用します。
「コントロールパネル > プログラム > Windows の機能の有効化または無効化」
から Hyper-V のディレクトリにチェックを入れることで有効になります。変更後は再起動が必要となります。
バージョン確認
1 |
docker version |
コンテナ確認 (動作中)
1 |
docker ps |
コンテナ確認 (全て)
1 |
docker ps -a |
コンテナ起動
1 |
docker start <CONTAINER ID or NAME> |
コンテナ停止
1 |
docker stop <CONTAINER ID or NAME> |
コンテナ削除
1 |
docker rm <CONTAINER ID or NAME> |
wordpress のインストール
今回は、wordpress を動かしてみます。
1 2 |
docker run --name mydb -e MYSQL_ROOT_PASSWORD=mypw -d mysql:5.7 docker run --name myapp -e WORDPRESS_DB_PASSWORD=mypw --link some-mysql:mysql -d -p 8080:80 wordpress |
docker compose
マルチコンテナDockerアプリケーションを定義して実行するためのツールで、ビルド、コンテナ起動、停止などの操作を簡単に行うことができます。
Docker Descktop for Mac や Docker for Windows では既に内包されています。
バージョン確認
1 |
docker-compose --version |
docker-compose.yml
コンテナ構成を docker-compose.yml に書いて構築してみます。
env_file で外部ファイルにして読み込ますことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
version: '3' services: db: image: mysql:5.7 container_name: mydb restart: always env_file: common.env wp: depends_on: - db image: wordpress:latest container_name: myapp ports: - "8080:80" restart: always env_file: common.env |
common.env
1 2 3 4 5 6 7 8 9 |
MYSQL_ROOT_PASSWORD=root_pass MYSQL_DATABASE=wp_db MYSQL_USER=wp_user MYSQL_PASSWORD=wp_pass WORDPRESS_DB_HOST=db:3306 WORDPRESS_DB_NAME=wp_db WORDPRESS_DB_USER=wp_user WORDPRESS_DB_PASSWORD=wp_pass |
起動
バックグランドで起動させる為、-d オプションをつけます。
1 |
docker-compose up -d |
まとめ
仮想環境構築で使われる Vagrant は VM や Ansible などを設定で操作する感じでVM から構築しますが、docker は VM の OS 上にコンテナを構築しますので、Vagrant で VM を立ち上げて、docker で環境を構築することや、Windows であれば Docker for Windows 、Mac であれば Docker Desktop for Mac から アプリケーションとしてインストールすることで簡単に導入できます。
参考
公式:docker