記事の目的
Dockerについて学習するにあたり、チュートリアルを行なったため
自分のアウトプットと振り返りを兼ねて残すことが目的
目次
1.Docker概要
2.Docker Container上でMySQLを立ち上げる
3.外部から接続する
1.Docker概要
Dockerとは?
仮想化をコンテナを使用することで実現するためのツール。
仮想化を行うツールにはVMWareやVirtualBoxなどがある。
コンテナの特徴
DockerがVMWareやVirtualBoxと異なる点について参考
https://www.docker.com/resources/what-container
仮想化は実現方法によっていくつに分類される。
そのには以下のものが存在する。
-
仮想マシン
-
VMとも呼ばれる。
仮想化の実現方法に、ハードウェアを抽象化する方法をとる。
1つのマシン上で複数のVMを起動するためにハイパーバイザというソフトウェアを使用する。
ハイパーバイザ
VM1つ1つにOS(ゲストOS)が必要になる。そのため容量が多く必要になるし、起動に時間がかかる。 -
コンテナ
-
アプリケーションが依存する層を抽象化する。
1つのマシン上で複数のコンテナを起動でき、OSの機能は他のコンテナと共有できるため、
コンテナ1つに1つのOSを必要としない。
そのため仮想マシンよりも起動が早い。
Dockerはコンテナの特徴を持つ。
Dockerで使用する単語
-
Docker Container
-
Dockerがある構成によってアプリケーションを起動する単位のこと。
Docker Containerは同じ構成のコンテナであっても複数起動することができる。 -
Docker Image
-
Dockerコンテナの構成を管理する単位のこと。
異なるコンテナを起動するためには異なるDocker Imageが必要となる。
コンテナの素のようなもの。イメージには名前とバージョン(TAG)が付けられる。イメージはDocker hubで管理可能。 -
Docker hub
イメージを管理するリポジトリ。アカウントを作成して、イメージをpushすることで自分のリポジトリの管理下における。 -
DockerFile
-
Docker Imageのビルドに必要なことを記述したテキストのこと。
決められた書き方に沿って記述することでイメージやコンテナをどんなものにするか、どんな指示を出すかなどが指定できる。例えばビルドしたいDocker ImageはCentOSを使用する、そのImageが使用するファイルを所定の場所に移動する、ポート80番を使用するなど。
2.Docker Container上でMySQLを立ち上げる
コンテナを立ち上げるにはイメージが必要。 イメージはDockerFileからビルドできるが、Docker hubからpullすることでイメージを入手することができるため、DockerFileを1から作る必要はない。
このことを念頭に、Dockerのインストールから進める。
環境
macOS Mojave 10.14.5
Dockerのインストール
Community版をインストールする。Enterpriseは触ったことないから機会があれば。
こちらのリンクからhttps://hub.docker.com/editions/community/docker-ce-desktop-mac
ページ中盤のボタンをから安定版と最新版の好きな方を選ぶ。
あとは案内の通りにインストールを進める。
一通り終わったら以下のコマンドでインストールされたことを確認
$ docker version
Client: Docker Engine - Community
以下略
MySQLをコンテナ上で起動
docker hubにはたくさんイメージがあるので、MySQLのイメージも入手できる。
https://hub.docker.com/
$ docker image pull mysql
以下略
docker image pull
でdocker hubからイメージを取得できる。今回はMySQLを取得。
次に以下のコマンドでイメージが存在することを確認する。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest abcdefghijklm 11 days ago 445MB
REPOSITORYにmysqlがあればOK
イメージ入手後docker container run
でコンテナを起動
$ docker container run \
--detach \
--name mydb \
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
mysql:latest
--detach
バックグラウンドで起動
--name mydb
起動するコンテナにmydbという名前をつける
-p 3306:3306
3306番ポートで起動し、ホストOSから3306番ポートでアクセス可能(host:guestの順番)
あとはパスワードとバージョン指定しただけ。
3.外部から接続する
3306番ポートで接続できるようになっているので、そのポートを指定する。
今回はIntelliJ IDEA CEから接続
IntelliJのDB Browserを開きコマンドで入力した情報をもとに接続情報を設定する。
Test Connectionを押下して、接続できれば外部からの接続に成功