[DB]dockerで3種類のデータベースを起動する

docker

dockerで3種類のデータベースを起動する

ちょっと面白そうだったので、試してみました。

dockerでsqlserver/mysql/postgresqlのデータベースを立ち上げる方法を記載しています。

基本的には公式のdockerhubのリンクを参考に立ち上げてみました。

sqlserverの起動/停止

公式のsqlserver dockerhubリンクはこちらです。

sqlserverを起動する

初回起動は下記のコマンドを実行します。

SA_PASSWORDに設定した値がデータベースのパスワードになるので、起動時に入力したパスワードは忘れないように…

$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-CU1-ubuntu-16.04

実行すると初回はこんな感じで、いろいろpullしてきます。

$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-CU1-ubuntu-16.04 

Unable to find image 'mcr.microsoft.com/mssql/server:2019-CU1-ubuntu-16.04' locally
2019-CU1-ubuntu-16.04: Pulling from mssql/server
59ab41dd721a: Pull complete 
...........

sqlserverが起動しているか確認する

docker psで起動しているか確認できます。

コンテナーの名前は勝手に付けられるようです。

$ docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
8daa39dfb4ed        mcr.microsoft.com/mssql/server:2019-CU1-ubuntu-16.04   "/opt/mssql/bin/perm…"   11 minutes ago      Up 11 minutes       0.0.0.0:1433->1433/tcp   wizardly_moore

sqlserverを停止する

起動中のsqlserverコンテナIDを指定して、stopコマンドで停止できます。

docker stop 8daa39dfb4ed(コンテナID)

sqlserverを再起動する

停止したsqlserverコンテナIDを指定して、startコマンドで再起動できます。

docker start 8daa39dfb4ed(コンテナID)

sqlserverの接続確認

Azure Data Stadioから接続できるか確認してみます。

azure data stadioからsqlserverログイン

サーバーはlocalhost, ユーザーはsa, パスワードは起動時に入力したパスワードになります。

azure data stadioからテーブル作成
データベースとテーブルが作成できることを確認しました。

mysqlの起動/停止

公式のmysql dockerhubリンクはこちらです。

mysqlを起動する

初回起動は下記のコマンドを実行します。

–nameでコンテナーの名前の設定、MYSQL_ROOT_PASSWORDでパスワードを設定します。

mysql:latestの箇所はmysqlのバージョンになります。

指定できるバージョンについては、公式のdockerhubページに書いています。

$ docker run --name codelike-mysql -e MYSQL_ROOT_PASSWORD=P@ssword! -d mysql:latest

実行すると初回はこんな感じで、いろいろpullしてきます。

% docker run --name codelike-mysql -e MYSQL_ROOT_PASSWORD=P@ssword! -d mysql:latest
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
d121f8d1c412: Already exists 
f3cebc0b4691: Pull complete 
...........

mysqlが起動しているか確認する

docker psで起動しているか確認できます。

名前をつけた、codelike-mysqlが起動しているのが確認できました。

$ docker ps                                                                        
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
f528f9c59345        mysql:latest                                           "docker-entrypoint.s…"   45 seconds ago      Up 43 seconds       3306/tcp, 33060/tcp      codelike-mysql

mysqlを停止する

起動中のmysqlコンテナIDを指定して、stopコマンドで停止できます。

docker stop f528f9c59345(コンテナID)

mysqlを再起動する

停止したmysqlコンテナIDを指定して、startコマンドで再起動します。

docker start f528f9c59345(コンテナID)

mysqlの接続確認

コンテナ内のmysqlコマンドから接続できるか確認してみます。

下記を実行するとコンテナの中に入れます。

$ docker exec -it f528f9c59345(コンテナID) bash

コンテナ内に入ったら、下記のコマンドでmysqlコマンドを実行します。

パスワードを聞かれるので、MYSQL_ROOT_PASSWORDに設定したパスワードを入力します。

$ mysql -u root -p

データベースの作成とテーブル作成をやってみました。

mysql> create database hoges;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| hoges              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> create table users(name varchar(255), age int);
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-----------------+
| Tables_in_hoges |
+-----------------+
| users           |
+-----------------+
1 row in set (0.00 sec)

OK👍🏻

postgresqlの起動/停止

公式のpostgresql dockerhubリンクはこちらです。

postgresqlを起動する

初回起動は下記のコマンドを実行します。

–nameでコンテナ名の設定、POSTGRES_PASSWORDにパスワードの設定ですね。

docker run --name codelike-postgres -e POSTGRES_PASSWORD=P@ssw0rd! -d postgres

実行すると初回はこんな感じで、いろいろpullしてきます。

docker run --name codelike-postgres -e POSTGRES_PASSWORD=P@ssw0rd! -d postgres
Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
d121f8d1c412: Already exists 
9f045f1653de: Pull complete 
....

postgresqlが起動しているか確認する

名前をつけたcodelike-postgresがいました。

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
61abcfbc9e83        postgres            "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp            codelike-postgres

postgresqlを停止する

起動中のpostgresqlコンテナIDを指定して、stopコマンドで停止します。

docker stop 61abcfbc9e83(コンテナID)

postgresqlを再起動する

停止したpostgresqlコンテナIDを指定して、startコマンドで再起動します。

docker start 61abcfbc9e83(コンテナID)

postgresqlの接続確認

コンテナ内のpsqlコマンドから接続できるか確認してみます。

下記を実行するとコンテナの中に入れます。

$ docker exec -it 61abcfbc9e83(コンテナID) bash

コンテナ内で下記を実行すると、接続できました。(パスワードを効かれない…?!😧)

$ psql -U postgres

データベースの作成とテーブル作成をやってみました。

postgres=# create database hoges;
CREATE DATABASE

postgres=# \c hoges
You are now connected to database "hoges" as user "postgres".

hoges=# create table users(name varchar(255), age int);
CREATE TABLE

hoges=# \dt
         List of relations
 Schema | Name  | Type  |  Owner   
--------+-------+-------+----------
 public | users | table | postgres
(1 row)

OK🙌🏻

コメント

タイトルとURLをコピーしました