💧

Dockerを使ってみる

2022/10/05に公開

Dockerとは?

一言で言うと”データやプログラムを隔離できる仕組み”
主にサーバーサイドで使用される

どんなイメージかというと船と船の上にあるコンテナのようなもの
このコンテナがMySQLであったりApacheだったりする
Dodkerではcontainer(コンテナ)と言います。

Dockerを使用するには...

Docker Engineをインストールする必要がある
これをインストールするとコンテナを作成したり動かせたりする

コンテナはイメージから作る

MySQLなどを中に入れたコンテナを作成するには、Docker Engineを使用するのですが、その際にimageと呼ばれるコンテナの素的なものをから生成する

イメージはかなりたくさんあり、用途に合わせてコンテナに入れるソフトウェアを変更できる
コンテナは複数作成が可能。容量が許す限りDocker(船)の上に載せる事ができる

Dockerの決まり

まずDockerが動くOSは、Linux上です。つまりどこかにLinuxが必要です。

また、コンテナを入れるプログラムもLinuxようのプログラムです。
Dockerの仕様がLinux OSを使うことが前提で設計されている為

Dockerを使用してDBの環境構築をしてみる

Dockerがをインストール出来たところから進めます。

Dockerがインスールされているか下記のコマンドをターミナルで実行して確認

 % docker --version

ディレクトリ構造

dockerstudy/
├─ docker-compose.yml

環境周りの詳細

今回は、
DB:mysql
クライアントツール:phpmyadmin

docker-compose.yml
version: "3"
services:
  mysql:
    ports:
      - 3309:3309
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=password
    links:
      - mysql
    ports:
      - 8080:80
    volumes:
      - /sessions

dockerstudyにcdを使って移動し下記を実施

 dockerstudy% docker-compose up -d
 
 #省略
 
 dockerstudy% docker ps 
 
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                         NAMES
d4b908a20311   phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   23 minutes ago   Up 22 minutes   0.0.0.0:8080->80/tcp                          dockerstudy-phpmyadmin-1
849bde1290c3   mysql:5.7               "docker-entrypoint.s…"   23 minutes ago   Up 22 minutes   3306/tcp, 33060/tcp, 0.0.0.0:3309->3309/tcp   dockerstudy-mysql-1

立ち上がりの確認を実施

ChromeなどのブラウザのURL欄に
0.0.0.0:8080 を貼り付けてEnter!

こん感じに画面が表示されるはず

ターミナルからSQLを触ってみる

dockerstudy% docker exec -it [image name] bash

 dockerstudy%docker exec -it dockerstudy-mysql-1 bash

 
#こんな感じに切り替わるはず

bash-4.2#

bash-4.2# mysql -u root -p 
Enter password:#ここにパスワードを打つ  password

mysql>

Discussion