0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初心者のためのDockerガイド ~mysqlコンテナを作ろう~

Posted at

お知らせ

こんにちは、愛知工業大学システム工学研究会です。
この記事は、2019-10-07に書かれた記事です。
間違った内容や古い内容が紛れていますが、過去の記事を残す一環として記事を書きます。
よろしくおねがいします。

ざっくりdockerがどんなものか知ってもらえれば幸いです。Dockerとは、コンテナ技術を利用した仮想環境を構築...

ざっくりdockerがどんなものか知ってもらえれば幸いです。

Dockerとは?

![](https://i.imgur.com/ygHmAZH.jpg)

Dockerとは、コンテナ技術を利用した仮想環境を構築、実行、管理するためプラットホームです。コンテナと呼ばれるコードや依存関係をまとめたものを、ホストOSのカーネルを利用して、隔離、制限させることで擬似的に独立した実行環境を構築することができます。

仮想マシンと似てますが、仮想マシンは実行環境ごとにゲストOSを動かします。

一方、コンテナはホストOSで実行するためより軽量で高速に実行停止することができます。

またDockerは、Dockerイメージを他者に渡すことができるのでチーム内の開発環境の共有が楽になります。

実行環境

macos 10.12.6

Dockerをインストール

実際にDockerを入れてみましょう!

2通り出しておきます。

他の方法じゃなくても問題ないです。

Homebrewからインストール

Homebrewとは、macOS用のパッケージ管理ツールです。

これを使えばアプリケーション、ソフトウェアを楽に管理できます。

ホームページは、下のurlから。

Homebrewをインストールするため以下のコマンドをターミナルで打ってください。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以下のコマンドでDockerインストールできます。

$ brew cask install docker

ディスクトップからインストール

mac版は下のURLから

Dockerを使おう

Dockerのバージョンを見てみましょう

$ docker -vを打ってみましょう

Docker version 18.06.1-ce, build e68fc7a

上記のようにバージョンが表示されます

Dockerイメージを入手しよう

Dockerイメージとは、コンテナを動かすのに必要な設定ファイルをまとめたものです。

Dockerコンテナは、このDockerイメージがないと起動しません。

このイメージを共有することで、様々なマシンで同じコンテナを動作させることができます。

イメージはDockerHubで配布されてます。

イメージを取得するにはdocker pullコマンドを使います。

このコマンドの構文は次の通りです。

docker pull [option] image名[:タグ名]

タグ名とは、イメージのバージョンです。

今回は最新のMysqlベースのイメージをdockerhubからもらいましょう。

以下のコマンドを叩いてください。

$ docker image pull mysql:latest

また全タグを入手したい時は、$ docker image pull -a mysql

Dockerイメージの一覧表示

入手したイメージ一覧が見たいときは以下のコマンドから

$ docker image ls [option] [リポジトリ名]

リポジトリ名に確認したいイメージ名を入れると、そのイメージのみ出力されます。

今回は、mysqlイメージが入ってるか確認したいので以下のコマンドを打ってください。

$ docker image ls mysql

以下のようにリスト形式で出力されます。

REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest 656186fff20d 3 weeks ago 372MB

リストの各項目一覧です。

項目 内容
REPOSITORY イメージ名
TAG イメージのタグ名
IMAGE ID イメージID
イメージ特有の番号
CREATED 作成日
SIZE イメージのサイズ、容量

主なオプション一覧

オプション 内容
-a 全てのイメージを表示
--digests ダイジェストを表示する
--no-trunc 結果を全て表示
-q イメージのIDのみ出力

Dockerイメージを削除する

作成したイメージを削除するには、以下のコマンドから

$ docker image rm [option] イメージ名

主なオプション一覧

オプション 内容
-f 強制的にイメージを削除する
--no-prun 中間イメージを削除しない

Dockerコンテナを動かそう

Mysqlイメージを入手したのでコンテナを動かしましょう!

コンテナを動作するコマンドは以下の通り

docker run [option] image名:バージョン [COMMAND]

主なオプション一覧

option 内容
-i コンテナの STDIN にアタッチ
-t 疑似ターミナル (pseudo-TTY) を割り当て
-d バックグラウンド実行
-e 環境変数の設定
--name コンテナ名の設定
-p ポート指定 ホストマシンのポート番号:コンテナ内のポート番号

実際に以下のコマンドを叩いてください

$ docker run -it -d\ -e MYSQL_ROOT_PASSWORD=mysql \ --name "mysqltest" \ -p 43306:3306 mysql:latest

"-d"をつけずに実行しても可

停止させたかったら"ctrl + c"すれば止まるはず

エラーが出なかったら、次は以下のコマンドを打ってください

$ mysql -h 127.0.0.1 --port 43306 -uroot -pmysql

これでmysqlにログインできます

下記と似たような画面になったら成功!!

mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.25 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

exitで脱出できます

動いてるDockerコンテナを確認しよう

どんなコンテナが動いてるか確認しよう

コンテナを動作するコマンドは以下の通り

docker ps [OPTIONS]

主なオプション一覧

命令 内容
-a 全てのコンテナを表示
停止してるコンテナも表示
-f Goテンプレートを使用したきれいな印刷コンテナ
-l 最新に作成されたコンテナを表示します(すべての状態を含みます)
-s 合計ファイルサイズを表示する

実際に以下のコマンドを叩いてください

docker ps

下記のような一覧が出るはずです。

docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3be4ac05b26b mysql:latest "docker-entrypoint.s…" 2 days ago Up 4 seconds 33060/tcp, 0.0.0.0:43306->3306/tcp mysqltest

リストの各項目一覧です。

項目 内容
CONTAINER ID コンテナID
IMAGE コンテナのベースイメージ
COMMAND コンテナ内で実行しているコマンド
CREATED コンテナ作成日
STATUS コンテナの状況
PORTS 割り当てられたポート番号
見方:ホスト側から見たときののポート番号->コンテナ内のポート番号
NAMES コンテナ名

Dockerコンテナを一時停止しよう

コンテナを一時停止するコマンドは以下の通り

docker pause コンテナ名 [コンテナ名(複数指定する場合)]

実際に実行

docker pause mysqltest

コンテナ名、コンテナIDどちらでも止めれます

docker psで確認するとSTATUSがUp 2 hours (Paused)と同じようになってるはずです。

Dockerコンテナを再開しよう

再開するには以下のコマンドを打ちます

docker unpause コンテナ名 [コンテナ名(複数指定する場合)]

実際に実行

docker unpause mysqltest

こちらもコンテナ名、コンテナIDどちらでも止めれます。

Dockerコンテナを停止しよう

docker stop [OPTIONS] コンテナ名 [コンテナ名(複数指定する場合)]

終わったらちゃんとコンテナ止めましょう!

実際に以下のコマンドを打ってください

$ docker stop mysqltest

止まってるか確認できたら次へ行きましょう

Dockerコンテナを削除しよう

もう使わなくなったコンテナは消していきましょう。

コンテナを削除するコマンドは以下の通り

docker rm [option] コンテナ名

主なオプション一覧

オプション 内容
-f 強制的にコンテナを削除する
-l 指定されたリンクを削除する
-v コンテナに関連付けられているボリュームを削除します

実際に以下のコマンドを打ってください

$ docker rm mysqltest

消えてなかったら-f使いましょう

Dockerfileを使ったコンテナ作り

Dockerfileとは、コンテナのインフラ構成を記述したファイルのことです。

docker buildを使いDockerfileを元にコンテナを作ることができます。

他人に渡せば、同じコンテナが使えます。

Dockerfileの基本書式は、命令 引数を連ねるだけ。命令は大文字、小文字どちらでも動きます

よく使うDockerfileの命令の一覧

命令 内容
FROM ベースとなるイメージの指定
RUN 引数に書かれたコマンドの実行
ENV 環境変数の設定
ADD ファイル、ディレクトリの追加
詳しくはリファレンスを見てください。
http://docs.docker.jp/engine/reference/builder.html#expose

実際にDockerfileを作りましょう!

適当なディレクトリにDockerfileを作って内容を下からコピペしてください。

FROM mysql:latest ENV MYSQL_ROOT_PASSWORD mysql

Dockerfileができたら以下のコマンド実行してください。

$ docker build -t mysqltest2:1.0

コンテナが作られてるはずなので$ docker image lsで確認してください

できてたらコンテナを起動しましょう。

$ docker container run -it -d\ -p 43306:3306 mysqltest2:1.0

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?