docker PostgreSQLを起動してアクセスする

dockerでPostgreSQLのコンテンをコンテナイメージから起動します。

PostgreSQLのコンテナイメージを取得

docker pull postgres

タグを指定しない場合、デフォルトの”latest”が設定されます。

コンテナイメージの確認

❯ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
postgres            latest              adf2b126dda8        8 days ago          313MB
ubuntu              latest              1d622ef86b13        4 weeks ago         73.9MB

上記の”postgres”が取得したPostgreSQLのコンテナイメージです。

コンテナ起動

# create dir
mkdir /data/postgres
# docker run
docker run -d \
    --name postgres \
    -e POSTGRES_PASSWORD=postgres \
    -p 5432:5432 \
    -v /data/postgres:/var/lib/postgresql/data \
    postgres

PostgreSQLを起動するには、”-e”オプションを指定して環境変数の”POSTGRES_PASSWORD”に初期パスワードを設定します。※起動だけなら、このパスワードの設定でOKです。

その他オプションでは、”-v”オプションを指定して、PostgreSQLのデータ保存先としてホストマシンの”/data/postgres”を指定しており、”-p”オプションを指定してホストマシンとのポート接続を指定しています。

クライアントからアクセス

以下の初期設定でPostgreSQLへアクセスします。

HOST:コンテナのIPアドレス
PORT:5432
DATABASE:postgres
USER:postgres
PASSWORD:postgres

※パスワードは、コンテナ起動時に環境変数に指定した値となります

Dockerよく使うコマンド

内容コマンド
Dockerサービス起動sudo service docker start
Dockerサービス停止sudo service docker stop
コンテナ表示dockr ps -a
コンテナ削除docker rm {CONTAINER ID}
コンテナ全削除docker rm $(docker ps -aq)
コンテナ起動
(フォアグラウンド)
docker run -it –rm ubuntu:18.0.4 /bin/bash
コンテナ起動
(バックグラウンド/デタッチド)
docker run -d -p 80:80 nginx:latest nginx -g ‘daemon off;’
または
docker run -d -it –name ubuntu-os ubuntu
バックグラウンドで起動中の
コンテナに接続
docker exec -it {CONTAINER ID} /bin/bash
または
docker attach {CONTAINER ID} /bin/bash
コンテナ停止docker stop {CONTAINER ID}
コンテナ全停止docker stop $(docker ps -q)
コンテナイメージ表示docker images
コンテナイメージ削除docker rmi {IMAGE ID}
コンテナイメージ全削除docker rmi $(docker images -q)
コンテナイメージ取得docker pull ubuntu
docker pull ubuntu:18.0.4
Dockerfileからコンテナイメージの
ビルド
docker build -t tagname .
※{CONTAINER ID},{IMAGE ID}は、適宜置き換える

Dockerサービス起動

sudo service docker start

※上記は、AmazonLinux2の場合

Dockerサービス停止

sudo service docker stop

※上記は、AmazonLinux2の場合


コンテナ表示

dockr ps -a

※オプション”-a”または”–all”でコンテナを全てを表示(オプションなしだと起動中のコンテナのみ表示)

コンテナ削除

docker rm {CONTAINER ID}

コンテナ表示時に表示されたコンテナIDを指定する

コンテナ全削除

docker rm $(docker ps -aq)

※オプション”-aq”でコンテナ全てのコンテナIDを表示


コンテナ起動(フォアグラウンド)

docker run -it --rm ubuntu /bin/bash

※オプション”–rm”はコンテナの終了時に、自動的にコンテナをクリーンアップする

コンテナ起動(バックグラウンド/デタッチド)

docker run -d -p 80:80 nginx:latest nginx -g 'daemon off;'
または
docker run -d -it --name ubuntu-os ubuntu

※オプション”-d”でデタッチド(バックグラウンド実行)、”-p”でホスト:コンテナのポート指定。オプション”–name”でコンテナの名前を指定する。

バックグラウンドで起動中のコンテナに接続

docker exec -it {CONTAINER ID} /bin/bash
または
docker attach {CONTAINER ID} /bin/bash

※”exec”コマンドを利用した場合、コンテナからログアウトしてもコンテナは停止しない
 ”attach”コマンドを利用した場合、コンテナからログアウトするとコンテナは停止する

コンテナ停止

docker stop {CONTAINER ID}

※コンテナIDはdocker psで確認

コンテナ全停止

docker stop $(docker ps -q)

※オプション”-q”で起動中のコンテナIDを表示


コンテナイメージ表示

docker images

ここで表示されるイメージIDを利用する

コンテナイメージ削除

docker rmi {IMAGE ID}

コンテナイメージ全削除

docker rmi $(docker images -q)

※オプション”-q”でイメージIDのみを表示する

コンテナイメージ取得

docker pull ubuntu
docker pull ubuntu:18.0.4

※上記は、”ubuntu”のコンテナイメージを取得。tag指定なしだと、デフォルトタグの”tag: latest”が指定される。

Dockerfileからコンテナイメージ作成

docker build -t tagname .

※”.”(ドット)は、カレントディレクトリにあるDockerfileを指定している

AWS EC2(Amazon Linux)にDockerインストール、起動、停止

AWSのEC2を利用して、Dockerを起動します。

AWS EC2でインスタンスを起動する

今回は、以下のOSを指定しました。

・AMI

Amazon Linux 2 AMI (HVM), SSD Volume Type

・インスタンスタイプ

t2.micro

EC2(Amazon Linux)にDockerをインストール

EC2への接続の仕方については、ここでは記載していません。

OSバージョン確認

$ cat /etc/system-release
Amazon Linux release 2 (Karoo)

yumアップデート

sudo yum update -y

Dokcerインストール

Amazon Extras LibraryからDockerをインストール

sudo amazon-linux-extras install docker -y

Dockerインストール確認

Dokcerのバージョンを表示することで、インストールされているか確認します

$ docker --version
Docker version 19.03.6-ce, build 369ce74

無事バージョンが表示されました

Dockerの起動

$ sudo service docker start
Redirecting to /bin/systemctl start docker.service

Dockerグループにユーザーを追加

デフォルトの”ec2-user”ユーザーを追加します。

sudo usermod -a -G docker ec2-user

グループへの追加が終わったら、ログインし直してユーザー権限が反映されていることを確認します。

Dockerコマンド実行確認

ログインし直したら、dockerコマンドを実行してみます。infoオプションでDockerの情報を表示します。

$ docker info

Dockerの情報が表示できれば、sudoなしでdockerコマンドを実行できています。

Dockerを停止する

$ sudo service docker stop
Redirecting to /bin/systemctl stop docker.service