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から接続できるか確認してみます。
サーバーはlocalhost, ユーザーはsa, パスワードは起動時に入力したパスワードになります。
データベースとテーブルが作成できることを確認しました。
mysqlの起動/停止
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🙌🏻
コメント