20200619のdockerに関する記事は14件です。

psql のためだけに Docker を使う

DB をホストするわけじゃないので PostgreSQL をインストールしたくないパーソンです。

すぐ忘れるのでメモ。

使い捨て

# docker image を pull
$ docker pull postgres

# コンテナ起動して bash へ(--rm で終了即コンテナ削除)
$ docker run --rm -it postgres /bin/bash

# psql を使うよ
root@xxxx:/# psql -h <host> -d <database> -U <user>

コンテナ使いまわし(bash のコマンド履歴使いたい場合)

# docker image を pull
$ docker pull postgres

# コンテナ起動して bash へ(--name でコンテナに名前付けて消さない)
$ docker run --name psql -it postgres /bin/bash

# psql を使うよ
root@xxxx:/# psql -h <host> -d <database> -U <user>

# 抜け
root@xxxx:/# exit

# もう一度コンテナへ
$ docker start -ai psql

# 履歴使える
root@xxxx:/# psql -h <host> -d <database> -U <user>

コンテナを消すのは docker rm psql

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerで経路制御によりブリッジネットワーク間で通信してみる!

Dockerのブリッジネットワークを使えばコンテナ同士をネットワーク経由で接続させる事ができます。ブリッジネットワークはユーザーが任意に作成することができ、異なるブリッジネットワークに接続しているコンテナは通信できない仕組みになっています。が、ブリッジネットワーク間にコンテナを作成し、経路制御して異なる2つのブリッジネットワークに接続しているコンテナ間で通信させてみようと思います。

やりたいことはこんな感じ。

スクリーンショット 2020-06-19 13.44.40.png

centos-net1 コンテナと centos-net2 コンテナ が通信できるようにします。図の通り、2つのコンテナは異なるブリッジネットワークに接続されているので centos-router コンテナがパケットのフォワーディングを担当します。

ルーティング(経路制御)ってなんだっけ

Wikipedia先生によるとこう定義されています。

ルーティング(英: routing)あるいは経路制御(けいろせいぎょ)とは、データを目的地まで送信するために、コンピュータネットワーク上のデータ配送経路を決定する制御の事である。

簡単に言ってしまえばパケットをサブネットを超えて送信したいときの制御のことですね。同じをサブネット内であればIPアドレスを元に直接宛先のホストへパケットの送信要求を投げることができます。しかし自分が所属していないネットワークに存在するホスト宛にパケットを送信したい場合、ルーティングが必要になります。

ルーティングテーブルとはルーティングをするときに、パケットをどのホストに対して投げるかを決定する際に用いる表のことです。例えばこんな感じ。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.19.0.1      0.0.0.0         UG    0      0        0 eth0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

スクリーンショット 2020-06-19 13.46.11.png

ルーティングテーブルは以下のように使用されます。

  1. 宛先IPアドレスと一致するエントリがあるか調べる。あるのであれば、Gatewayに記載されているIPアドレスに向けてパケットを投げる。このとき、Gatewayが 0.0.0.0 に設定されているものは自身の所属するサブネットのためルーティングは不要になる(ここは明記されているドキュメントを見つけられなかったので要調査です)。
  2. 宛先IPアドレスと一致するエントリがない場合、デフォルトルートのGatewayに向けてパケットを投げる。デフォルトルートはDestinationが 0.0.0.0 になっているエントリ。

ネットワークとコンテナの作成

ではではDockerでルーティングテーブルをいじくり、2つのブリッジネットワークをつなげてみましょう。

ブリッジネットワークを2つ作成します。図と同じようにするため、サブネットアドレスを指定しています。

$ docker network create net1 --subnet=172.19.0.0/16
d40bf931a362d32c2b1f37470fa24247d290e017f74ceb4fea3b38c947d87fb1
$ docker network create net2 --subnet=172.20.0.0/16
863b0f24ad6f99207733ba13e28f6dc16d265693112186c0521fd4cb8e49f972

コンテナをそれぞれ立ち上げ、作成したブリッジネットワークにつなげます。コンテナの起動オプションとして privileged を指定していますが、これはルーティングテーブルを変更するために必要な権限周りのオプションです。

$ docker run -dit --name centos-net1 --privileged --net="net1" centos:centos7
2f08362d149303f33a49c4a718063437ad842228d83850a005e937db0b89f69f
$ docker run -dit --name centos-net2 --privileged --net="net2" centos:centos7
997e496125cc5b5f29e2bd7c48850b1bfa001aea334d6e5f8afea3906d4c0d9a
$ docker run -dit --name centos-router --net="net1" centos:centos7
a9f0e3a4d0bdb9d8d378a317f8cfce31ca3504d13897a9f6ad9909bcdbd4ce4d
$ docker network connect net2 centos-router

それぞれのコンテナに接続してルーティングテーブルとパケット通信を監視するソフトウェアをインストールします。

# yum -y install net-tools tcpdump traceroute

ルーティングテーブルの確認

centos-net1 のルーティングテーブルを確認してみます。ルーティングテーブルは routeコマンドで表示できます。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.19.0.1      0.0.0.0         UG    0      0        0 eth0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

Destinationが 0.0.0.0 となっているエントリはデフォルトルートですね。デフォルトルートはどのエントリにも一致しない場合にどのIPアドレス宛にパケットを送り出すかを表すエントリです。上記の場合は自身の所属するサブネット以外への通信はすべて 172.19.0.1 にパケットを送り出す設定になっています。なので、pingを centos-net2 コンテナに向けて打っても 172.19.0.1 に向けてパケットが飛ばされるので届きません。試しに打ってみましょう。

centos-net2 コンテナのIPアドレスは 172.20.0.2ですね。

$ docker network inspect net2
〜一部を抜粋〜
"Containers": {
            "997e496125cc5b5f29e2bd7c48850b1bfa001aea334d6e5f8afea3906d4c0d9a": {
                "Name": "centos-net2",
                "EndpointID": "cc7611fcb5ae71c7a8a79fb658a374b98c15d95b4f42848b7eb70fac05317208",
                "MacAddress": "02:42:ac:14:00:02",
                "IPv4Address": "172.20.0.2/16",
                "IPv6Address": ""
            },
            "a9f0e3a4d0bdb9d8d378a317f8cfce31ca3504d13897a9f6ad9909bcdbd4ce4d": {
                "Name": "centos-router",
                "EndpointID": "6a8f1aa134751cd3232a214e08599ac0f00cf37ad06cb714a99a8d3fa92b37c1",
                "MacAddress": "02:42:ac:14:00:03",
                "IPv4Address": "172.20.0.3/16",
                "IPv6Address": ""
            }
        },
〜一部を抜粋〜

centos-net1 コンテナから centos-net2 コンテナに向けてpingを打ちます。

# ping 172.20.0.2
PING 172.20.0.2 (172.20.0.2) 56(84) bytes of data.
^C
--- 172.20.0.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2006ms

100% packet loss と表示されて通信できていないことがわかりますね。デフォルトルートである 172.19.0.1 にパケットが送出されているかをネットワークの経路を表示できる traceroute コマンドで確認してみます。

# traceroute 172.20.0.2 -n
traceroute to 172.20.0.2 (172.20.0.2), 30 hops max, 60 byte packets
 1  172.19.0.1  2.570 ms  2.281 ms  2.052 ms

ルーティングテーブルの変更

ルーティングテーブルを変更して centos-net1 と centos-net2 コンテナが通信できるようにします。centos-net1 のルーティングテーブルで 172.20.0.0/16 のネットワークに向けたパケットを centos-router コンテナに向けて投げるようにし、centos-router コンテナがパケットをフォワーディング(転送)するようにします。

# route add -net 172.20.0.0 netmask 255.255.0.0 gw 172.19.0.3 eth0
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.19.0.1      0.0.0.0         UG    0      0        0 eth0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
172.20.0.0      172.19.0.3      255.255.0.0     UG    0      0        0 eth0

centos-net2 でも応答ができるよう同じ要領でルーティングテーブルに変更を加えます。

# route add -net 172.19.0.0 netmask 255.255.0.0 gw 172.20.0.3 eth0
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.20.0.1      0.0.0.0         UG    0      0        0 eth0
172.19.0.0      172.20.0.3      255.255.0.0     UG    0      0        0 eth0
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

centos-router ではIPフォワーディングが有効になっているかを確認します。

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

スクリーンショット 2020-06-19 13.47.41.png

ここまで設定できたら centos-net1 から centos-net2 に向けてpingを打ってみましょう。

# ping 172.20.0.2
PING 172.20.0.2 (172.20.0.2) 56(84) bytes of data.
64 bytes from 172.20.0.2: icmp_seq=1 ttl=63 time=2.63 ms
64 bytes from 172.20.0.2: icmp_seq=2 ttl=63 time=0.318 ms
64 bytes from 172.20.0.2: icmp_seq=3 ttl=63 time=0.177 ms
64 bytes from 172.20.0.2: icmp_seq=4 ttl=63 time=0.164 ms
64 bytes from 172.20.0.2: icmp_seq=5 ttl=63 time=0.191 ms
^C
--- 172.20.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4075ms
rtt min/avg/max/mdev = 0.164/0.696/2.634/0.970 ms

疎通できましたね。

パケットが centos-router を経由しているかも確認してみましょう。

# traceroute 172.20.0.2 -n
traceroute to 172.20.0.2 (172.20.0.2), 30 hops max, 60 byte packets
 1  172.19.0.3  0.258 ms  0.114 ms  0.340 ms
 2  172.20.0.2  0.461 ms  0.422 ms  0.128 ms

centos-router (172.19.0.3)を経由しているのがわかりますね。

centos-router のTCPパケットをキャプチャしてみるとIPフォワーディングの様子を見ることができます。

# tcpdump -i eth0 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
01:48:39.190754 IP 172.19.0.2 > 172.20.0.2: ICMP echo request, id 22, seq 53, length 64
01:48:39.190981 IP 172.20.0.2 > 172.19.0.2: ICMP echo reply, id 22, seq 53, length 64
01:48:40.213036 IP 172.19.0.2 > 172.20.0.2: ICMP echo request, id 22, seq 54, length 64
# tcpdump -i eth1 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
01:49:06.738801 IP 172.19.0.2 > 172.20.0.2: ICMP echo request, id 22, seq 80, length 64
01:49:06.738874 IP 172.20.0.2 > 172.19.0.2: ICMP echo reply, id 22, seq 80, length 64
01:49:07.763733 IP 172.19.0.2 > 172.20.0.2: ICMP echo request, id 22, seq 81, length 64

172.19.0.0/16 に所属するeth0インターフェイスと 172.20.0.0/16 に所属するeth1インターネットそれぞれでパケットをフォワーディングしている様子が見れました。

使用したアイコン

Icons made by Freepik from www.flaticon.com

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

cygwinのdockerでエラー [Failed to execute script docker-compose]

laravelを使ってlocal開発をしている時にdockerコマンドでエラーが発生するようになった。
またローカルの環境ではcygwin上で開発を行っている。

╰─➤  docker-compose ps                                                                                                                                                                                                                                                 127 ↵
[6276] Failed to execute script docker-compose
Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose\cli\main.py", line 72, in main
  File "compose\cli\main.py", line 125, in perform_command
  File "compose\cli\command.py", line 47, in project_from_options
  File "compose\config\environment.py", line 77, in from_env_file
  File "compose\config\environment.py", line 72, in _initialize
  File "compose\config\environment.py", line 44, in env_vars_from_file
  File "c:\jenkins\workspace\dsg_compose_1.25.5\venv\lib\codecs.py", line 714, in __next__
  File "c:\jenkins\workspace\dsg_compose_1.25.5\venv\lib\codecs.py", line 645, in __next__
  File "c:\jenkins\workspace\dsg_compose_1.25.5\venv\lib\codecs.py", line 558, in readline
  File "c:\jenkins\workspace\dsg_compose_1.25.5\venv\lib\codecs.py", line 504, in read
  File "c:\jenkins\workspace\dsg_compose_1.25.5\venv\lib\encodings\utf_8_sig.py", line 117, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 10: invalid start byte

色々ググってみたが、日本語を使ってるととか情報が出てくるがそもそもdocker関係を修正していないにエラーが発生するようになった。

で思いついたのがlaravelで使用している .env をシンボリックリンクに変更したのを思い出し元に戻したら直った。。
dockerも .envを使うらしいのでcygwin環境下でのシンボリックリンクがなんかだめみたい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerでARPテーブルを確認してみる!

仕事の都合上Linuxやネットワークの勉強をしています。深く関わったことがない領域ですし、字を追っただけでは理解に限界があるなーと思いまして、実際に触って、見て理解しようかと思いました。というわけでこの記事はその記録というわけです。

タイトル通りARPテーブルを見てネットワークの仕組みの一部を覗いてみようかと。環境はDockerを使います。

$ docker --version
Docker version 19.03.8, build afacb8b

ARPってなんだっけ

ARP (Address Resolution Protocol)はIPv4アドレスからMACアドレスを解決するために使用される通信プロトコルです。ネットワークに接続されたコンピュータが通信するときには通信相手のIPアドレスに向けてパケットを送信します。しかし、実際にはデータリンク層があるのでIPアドレスとMACアドレスの対応を管理しなくてはいけません。ARPはIPアドレスは分かっているけれど、MACアドレスがわからない場合に単一のサブネットワークの内部で解決を行います。

arp-overview.png

まずDockerコンテナを同じネットワークに接続させる

centos1 と centos2 のコンテナをデフォルトのブリッジネットワークに接続させます。

$ docker run -dit --name centos1 centos:centos7
6ce3b9540c9eb79a672c4b438f761967f6315068a199c8309b8c7678660c9fcb
$ docker run -dit --name centos2 centos:centos7
6899cf57b849c5f164b26b8b12dd78ebb9ac78679673847cee240855b65a16b7
$ docker network inspect bridge
~(略)~
        "Containers": {
            "6899cf57b849c5f164b26b8b12dd78ebb9ac78679673847cee240855b65a16b7": {
                "Name": "centos2",
                "EndpointID": "cc0278128b0743be739b61567f3831f2371ea2f211182345292876f0c35eecf2",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "6ce3b9540c9eb79a672c4b438f761967f6315068a199c8309b8c7678660c9fcb": {
                "Name": "centos1",
                "EndpointID": "87a14892863da5410cbdd93962540efb796b7a33f99c3ed39c6f96e28c271958",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
~(略)~

centos1 でARPテーブルを表示します。ARPテーブルとはそのホストが記憶しているIPアドレスとMACアドレスの対応です。初期状態ではコマンドが入っていないのでインストールしています。(ARPテーブルは arpコマンドで表示できます。)

$ docker attach centos1
[root@6ce3b9540c9e /]# yum -y install net-tools
[root@6ce3b9540c9e /]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.17.0.1               ether   02:42:c0:38:4f:cb   C                     eth0

まだ何も通信していませんがARPテーブルに一つのエントリがキャッシュされています。このアドレスはルーティングテーブルを見てみるとデフォルトルートになっていることがわかります。デフォルトルートとは簡単に言うと経路制御表でマッチしなかった場合どのIPアドレス宛にパケットを送信するかを表すものです。(ルーティングテーブルは netstat -r コマンドで表示できます。)

[root@6ce3b9540c9e /]# netstat -r -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG        0 0          0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 eth0

余談になりますがデフォルトルートになっている 172.17.0.1 アドレスはDockerのデフォルトブリッジで設定されているゲートウェイアドレスと一致します。このあたりの知識整理は機会があればまた後でしておきたいですね。

コンテナ間で通信してARPテーブルが変わるか確認する

centos1 から centos2 へpingコマンドを使って通信し、ARPテーブルがどのように変わるか確認してみましょう。

[root@6ce3b9540c9e /]# ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.220 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.113 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.248 ms
64 bytes from 172.17.0.3: icmp_seq=4 ttl=64 time=0.116 ms
^C
--- 172.17.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3082ms
rtt min/avg/max/mdev = 0.113/0.174/0.248/0.061 ms
[root@6ce3b9540c9e /]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.17.0.1               ether   02:42:c0:38:4f:cb   C                     eth0
172.17.0.3               ether   02:42:ac:11:00:03   C                     eth0

最後の行に新しいエントリが追加されているのがわかりますね。これは centos2 のIPアドレスとMACアドレスに一致します。つまり、centos1 と centos2 はARPによってIPアドレスとMACアドレスの情報を共有できたということになります。ちなみに、pingコマンドで受信側になった centos2 でも同じようにARPテーブルが更新されます。

使用したアイコン

Icons made by Freepik from www.flaticon.com

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker環境内で日本語入力

諸説ありますがこれでいけました。
下記記載の各 RUN コマンドを実行しないとうまくいきませんでした。

# Japanese
RUN apt-get update \
    && apt-get install -y locales \
    && locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL=ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP.utf8

参考リンク

https://qiita.com/motoki_giants/items/0c3b9d174edef9410310
https://qiita.com/munimuni/items/93a87ff4a6366eb13f0d

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

初めてのKubernetes - 1.環境構築

はじめに

Kubernetesってなんか面白そう。よく分からんけど。

と、ふと思ったので調べてみることにしました。
ですが、雑誌やWebの記事などを読んでも、よく分かりませんでした。
というわけで実際に手を動かして学んでみることにしました。

実際に手を動かそうと思ったのですが、自宅にPCが何台も持っていません。
ただ、なぜか放置されたRaspberry Pi 3 Model Bが4台も転がっていたので、
これを使ってKubernetesの環境を構築しようと思い立ちました。

参考記事

多くの方々がすでに取り組まれている話題のようで、
以下の記事がとても参考になり、ほぼパクリしました。

ただ、Raspberry Pi 3 Model B x 4 で環境構築しようとしているので、
そこが少しだけ違う点です。

材料

参考記事の方々はRaspberry Pi 3 Model B x 3 で構築していて、
スタッカブルケースは1台でコンパクトに仕上げています。

ですが、私は、Raspberry Pi 3 Model B x 4 で構築しようとしているので、
Raspberry Pi 3 Model B用とネットワーク+USB用の2台のスタッカブルケースで構築します。

k8s-ingredients.jpeg

完成形

参考記事の方々の手順とほとんど全く同じですので、構築手順の詳細は省略します。
購入したUSBケーブルは思ったより丈夫で固くて取り回しはあまり自由にはできません。
ただ、ケーブルの断線の心配がないので安心です。
スタッカブルケース2台で組むと持ち歩くのには辛いですが、
自宅に置いておく分には、1台に詰め込まなくても良いので、
環境構築としては比較的簡単にできる思います。

k8s-front.jpeg
k8s-back.jpeg
k8s-up.jpeg

まとめ

先駆者の方々の取り組みを参考にさせて頂いたので、何も迷うことなく構築できました。
次は、この環境にKubernetesをインストールして動作確認までをやっていきたいと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerでGitLabサーバーを立てる

今日も小ネタです。
何番煎じってネタですけど、つまづきポイントあったのでメモがてら。

構築セット一式はこちら → https://github.com/yagrush/docker-gitlab

必要環境

  • Linux または Mac
    • メモリ:8GB以上推奨(←これが意外とハマりどころ…)
    • Docker
    • docker-compose

MacとLinux(on AWS)で動作確認済です。

Linux(on AWS)は「無料でええやろ」ってt2.microとかでやってて、「なんで動かねんだぁ…」ってハマりました…
t2.large(メモリ8GiB)にしたら無事動作。

ちなみにWindowsではうまく動きませんでした。
時間があるときにまた調べてみようかな。

使い方

0. 構築セット一式をダウンロードする

wget https://github.com/yagrush/docker-gitlab/archive/master.zip -O docker-gitlab.zip; unzip docker-gitlab.zip; rm docker-gitlab.zip

#ついでにディレクトリを移動しておく
cd docker-gitlab-master

1. ポート:80 を他のソフトウェアですでに使用していたら

docker-compose.yml

    ports:
      - 80:80

- 80:80 の左側の 80

    ports:
      - 8081:80

とか他の番号に変えてあげてください。

2. ビルド&起動する

docker-compose up -d

3. GitLab の WEB UIにアクセスしてみる

http://構築したホストのアドレス:80
↑ 必ずしもドメイン振ってる必要は無く、IP直打ちでもOK。
手順1.でポート変更してたら、:80 を書き換えて下さいね。

成功すると、まずはじめに管理者ユーザー root のパスワード設定を求められるWEB画面が開きます。
設定しおわったらあらためて root でログインしてみましょう。

もしエラー画面になったら

念のため1分くらい待ってから再度アクセスしてみてください。
(中で結構色々起動しているようで重いので、待てば起動するかもしれません。)

それでもダメだったら、何か問題が発生しているかもしれません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC2(Amazon Linux 2)にDocker CEをインストールしてみる

EC2(Amazon Linux 2)にDocker CEをインストールしてみる。

ググるとDocker公式のCentOS向けインストール手順が出てきたので、Amazon Linux 2も同じRHEL系だから大丈夫だろうとチャレンジ。

EC2インスタンスを立ち上げてSSHログイン済みのところからスタート。

インストール方法の選択

Docker CEのインストール方法はいくつかあるらしい。

公式ドキュメントより引用~

・たいていのユーザは Docker のリポジトリをセットアップ して、そこからインストールしています。 インストールやアップグレードの作業が簡単だからです。 この方法をお勧めします。
・ユーザの中には RPM パッケージをダウンロードし、手動でインストールしている方もいます。 アップグレードも完全に手動となります。 この方法は、インターネットにアクセスできない環境で Docker をインストールするような場合には有用です。
・テスト環境や開発環境向けに、自動化された 便利なスクリプト を使って Docker のインストールを行うユーザもいます。

おすすめされているリポジトリを使ったインストールをやってみる。

リポジトリのセットアップ

yum-utils、device-mapper-persistent-data、lvm2をインストール。

$ sudo yum install -y yum-utils \
> device-mapper-persistent-data \
> lvm2
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                        | 3.7 kB  00:00:00
Package yum-utils-1.1.31-46.amzn2.0.1.noarch already installed and latest version
Package device-mapper-persistent-data-0.7.3-3.amzn2.x86_64 already installed and latest version
Package 7:lvm2-2.02.177-4.amzn2.0.2.x86_64 already installed and latest version
Nothing to do
$ 

既にインストール済みだった模様。

続いてリポジトリのセットアップ。

$ sudo yum-config-manager --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
$ 

Docker CEのインストール

インストール
$ sudo yum install docker-ce
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                 | 3.7 kB  00:00:00
docker-ce-stable                                                           | 3.5 kB  00:00:00
(1/2): docker-ce-stable/x86_64/updateinfo                                  |   55 B  00:00:00
(2/2): docker-ce-stable/x86_64/primary_db                                  |  44 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 3:19.03.11-3.el7 will be installed
--> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Processing Dependency: containerd.io >= 1.2.2-3 for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Processing Dependency: docker-ce-cli for package: 3:docker-ce-19.03.11-3.el7.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be obsoleted
---> Package containerd.io.x86_64 0:1.2.13-3.2.el7 will be obsoleting
--> Processing Dependency: container-selinux >= 2:2.74 for package: containerd.io-1.2.13-3.2.el7.x86_64
---> Package docker-ce.x86_64 3:19.03.11-3.el7 will be installed
--> Processing Dependency: container-selinux >= 2:2.74 for package: 3:docker-ce-19.03.11-3.el7.x86_64
---> Package docker-ce-cli.x86_64 1:19.03.11-3.el7 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be obsoleted
--> Finished Dependency Resolution
Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable)
           Requires: container-selinux >= 2:2.74
Error: Package: 3:docker-ce-19.03.11-3.el7.x86_64 (docker-ce-stable)
           Requires: container-selinux >= 2:2.74
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
$ 

エラーとなった。

同じRHEL系とは言えCentOS向けだしなぁと思いつつ解決策をググっていると同じエラーになっている方がいたのでお知恵を拝借。どうも先にインストールしたdocker-ce.repoが悪さをしている模様。AWSにもAmazon Linux 2にDocker CEをインストールする方法が載っているとのことで、そちらを実行してみる。

再チャレンジ
$ sudo amazon-linux-extras install docker
Installing docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker docker-ce-stable
13 metadata files removed
6 sqlite files removed
0 metadata files removed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                 | 3.7 kB  00:00:00
amzn2extra-docker                                                          | 3.0 kB  00:00:00
docker-ce-stable                                                           | 3.5 kB  00:00:00
(1/7): amzn2-core/2/x86_64/group_gz                                        | 2.5 kB  00:00:00
(2/7): amzn2-core/2/x86_64/updateinfo                                      | 218 kB  00:00:00
(3/7): amzn2extra-docker/2/x86_64/updateinfo                               |   69 B  00:00:00
(4/7): amzn2extra-docker/2/x86_64/primary_db                               |  68 kB  00:00:00
(5/7): docker-ce-stable/x86_64/updateinfo                                  |   55 B  00:00:00
(6/7): docker-ce-stable/x86_64/primary_db                                  |  44 kB  00:00:00
(7/7): amzn2-core/2/x86_64/primary_db                                      |  41 MB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
 Package          Arch             Version                      Repository                   Size
==================================================================================================
Installing:
 docker           x86_64           19.03.6ce-4.amzn2            amzn2extra-docker            37 M

Transaction Summary
==================================================================================================
Install  1 Package

Total download size: 37 M
Installed size: 161 M
Is this ok [y/d/N]: y
Downloading packages:
docker-19.03.6ce-4.amzn2.x86_64.rpm                                        |  37 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : docker-19.03.6ce-4.amzn2.x86_64                                                1/1
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                1/1

Installed:
  docker.x86_64 0:19.03.6ce-4.amzn2

Complete!
  0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]
  2  httpd_modules            available    [ =1.0  =stable ]
  3  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  5  postgresql9.6            available    \
        [ =9.6.6  =9.6.8  =stable ]
  6  postgresql10             available    [ =10  =stable ]
  8  redis4.0                 available    \
        [ =4.0.5  =4.0.10  =stable ]
  9  R3.4                     available    [ =3.4.3  =stable ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
          =stable ]
 11  vim                      available    [ =8.0  =stable ]
 13  ruby2.4                  available    \
        [ =2.4.2  =2.4.4  =2.4.7  =stable ]
 15  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
          =7.2.24  =7.2.26  =stable ]
 17  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
          =10.2.10_7.2.24  =stable ]
 18  libreoffice              available    \
        [ =5.0.6.2_15  =5.3.6.1  =stable ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
 21  mate-desktop1.x          available    \
        [ =1.19.0  =1.20.0  =stable ]
 22  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50
          =stable ]
 24  epel                     available    [ =7.11  =stable ]
 25  testing                  available    [ =1.0  =stable ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    \
        [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232
          =1.8.0_242  =stable ]
 28  firecracker              available    [ =0.11  =stable ]
 29  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 30  squid4                   available    [ =4  =stable ]
 31  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
 32  lustre2.10               available    \
        [ =2.10.5  =2.10.8  =stable ]
 33  java-openjdk11           available    [ =11  =stable ]
 34  lynis                    available    [ =stable ]
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1                   available    [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11             available    [ =11  =stable ]
 42  php7.4                   available    [ =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
[ec2-user@ip-172-31-14-246 ~]$

うまくいったっぽい。

起動

$ sudo systemctl start docker.service
$ 
$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-06-18 17:12:07 UTC; 9s ago
     Docs: https://docs.docker.com
  Process: 6680 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
  Process: 6662 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
 Main PID: 6687 (dockerd)
    Tasks: 8
   Memory: 45.5M
   CGroup: /system.slice/docker.service
           mq6687 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --defa...

Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker App...
Jun 18 17:12:07 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[6687]: time="2020-06-1...
Hint: Some lines were ellipsized, use -l to show in full.
$ 
$ 
$ 
$ docker --version
Docker version 19.03.6-ce, build 369ce74
$ 

自動起動設定

$ sudo systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
$ 
$ sudo systemctl list-unit-files | grep docker.service
docker.service                                enabled
$ 

 
 
最後にCentoOS向け手順で設定したリポジトリは不要っぽいので削除。

$ cd /etc/yum.repos.d
$ 
$ ls -l
total 12
-rw-r--r-- 1 root root  985 Nov  1  2019 amzn2-core.repo
-rw-r--r-- 1 root root 1015 Jun 18 16:59 amzn2-extras.repo
-rw-r--r-- 1 root root 2424 Oct 18  2019 docker-ce.repo
$ 
$ sudo rm -f docker-ce.repo
$ 
$ 
$ docker --version
Docker version 19.03.6-ce, build 369ce74
$ 

 
 

以上です。おつかれさまでした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dockerをアンインストールしてみる (EC2 amazon linux 2)

とりあえずdockerを使ってみようと
yum -y install docker でEC2にインストール。

ところが少し調べてみるとdocker(無印)は古くて、今は docker-ce か docker-ee になっているとのこと。

docker-ceのdocker公式ドキュメントを覗いてみると、アンインストールの仕方が載っていたので実行してみる。

$ sudo yum remove docker docker-common docker-selinux docker-engine
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package               Arch                  Version                          Repository                         Size
======================================================================================================================
Removing:
 docker                x86_64                19.03.6ce-4.amzn2                @amzn2extra-docker                161 M

Transaction Summary
======================================================================================================================
Remove  1 Package

Installed size: 161 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/1 
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/1 

Removed:
  docker.x86_64 0:19.03.6ce-4.amzn2                                                                                   

Complete!
$ 

公式ドキュメントによると、この4パッケージの削除を実行してみて全て消えていればOKとのことだったため、現在何が入っているかは特に確認せずyum removeを実行。結果としてdockerだけインストールされている状態だったためこれをアンインストールしておしまいだった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel+MySQL+Docker+nginx】Laravel開発環境をDockerで構築する手順

はじめに

Laravelの勉強するための開発環境作成手順メモです。
自分用なので雑い。

準備

Dockerの設定だったりしていきます。

ディレクトリ

プロジェクトディレクトリ配下に以下2つのディレクトリを作成。

  • Docker
  • server

docker-compose.yml

プロジェクトディレクトリ配下にdocker-compose.ymlファイルを作成。

docker-compose.yml
version: '3'

services:
  php:
    container_name: php
    build: ./docker/php
    volumes:
      - ./server:/var/www

  nginx:
    image: nginx
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - ./server:/var/www
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  db:
    image: mysql:5.7
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./docker/db/data:/var/lib/mysql
      - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/db/sql:/docker-entrypoint-initdb.d
    ports:
      - 4306:3306

Dockerfile

Dockerディレクトリ配下にphpフォルダを作成。
その中にDockerfileを作成。

FROM php:7.3-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
    && apt-get install -y zlib1g-dev libzip-dev mariadb-client \
    && docker-php-ext-install zip pdo_mysql

#Composer install
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer

ENV PATH $PATH:/composer/vendor/bin

WORKDIR /var/www

RUN composer global require "laravel/installer"

PHPの設定

Dockerfileと同階層でphp.iniファイルを作成。

php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

nginx

Dockerディレクトリにnginxフォルダを作成。
その中にdefault.confファイルを作成。

default.conf
server {
  listen 80;

  root  /var/www/public;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass   php:9000;
    fastcgi_index  index.php;

    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
  }
}

MySQL

Dockerディレクトリにdbフォルダを作成。
その中にmy.cnfファイルを作成。

my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

Laravelプロジェクト

プロジェクトのルートディレクトリに移動。
以下コマンドを実行。

docker-compose up -d
docker-compose exec php bash
laravel new

確認

locallhostで画面が表示されれば成功。
やったね。

DB設定

dockerで開発環境を作った場合、.envファイルとdocker-compose.ymlファイルの情報を合わせとかないとmigrateできなかったりとめんどくさいので今やっとく。

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=root

これでDBの登録も問題なし。

まとめ

自分用メモなのでめちゃくちゃざっくりしてますが参考になれば。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerでソースコードをコンテナに入れる(マウントする)には?【Windows10Home】

はじめに

初めてDockerを扱う際、多くの素晴らしい記事やチュートリアルのおかげで、イメージやコンテナの起動、削除をすぐに実施することができました。
しかし、恥ずかしながら「コンテナは起動したけど結局どうやってソースコードをコンテナの中に反映すればよいの」という状態になり、すぐに理解できず苦しんでしまいました。
また、WindowsHome独特の問題にも躓きましたので備忘録も兼ねて、私と同じような悩みをもつ初心者の方を対象に、今回はその解決策についてご紹介したいと思います。

以降の運用方法は、比較的小規模の開発を想定しています。(私自身、大規模なWebシステムで用いるというよりは、自前の機械学習環境の保存や共有に用いています。)

環境

  • Windows10 Home 64bit
  • Docker
    • Client 19.03.1
    • Server 19.03.5

WindowsHomeへのDockerインストールは下記の記事を参考にさせていただきました。
- windows 10 home で docker を導入するメモ

設定ファイルの準備

実現したいことは、指定したディレクトリ配下の変更がコンテナにも反映される状態を作成したいということです。これは、コンテナのボリューム(メモリ領域)と、ホストPC(Dockerを起動しているPC)のメモリ領域を共有(マウント)させることで実現できます。
Dockerfileとdocker-compose.ymlという二種類のファイルを用意する必要があります。例として下図のようなファイル構成を想定します。

ファイル構成
|-Dockerfile
|-docker-compose.yml
|-hello.py

Dockerfileの例

Dockerファイルは独自のDockerImageを作成するためのファイルです。ここではTensorFlowのイメージを用いることを想定して下記のように記述します。

Dockerfile
FROM tensorflow/tensorflow
WORKDIR /usr/src/app
COPY . .

簡単に各コマンドを紹介します。

コマンド 概要
FROM DockerHubからダウンロードするイメージを指定します。
WORKDIR イメージ内の作業ディレクトリを指定します。
COPY HOST(今回の場合はWindowsHome)からコンテナにファイルをコピーします。一つ目の引数がホスト側のディレクトリ、二番目の引数がコンテナ側の作業ディレクトリ(直前に指定した/usr/src/app)を表しています。

docker-compose.ymlの例

続いてdocker-compose.ymlです。DockerComposeは複数のコンテナを並列して動作させる場合に使用するサービスですが、コンテナが単独の場合でもVolumeの設定を記述しておけるので便利です。

docker-compose.yml
version: '3'
services:
    app:
        build: .
        container_name: py-container
        volumes:
            - .:/usr/src/app
        tty: true

簡単に各コマンドを紹介します。

コマンド 概要
build 使用するDockerfileの保存ディレクトリを指定しています。
container_name コンテナ名を指定しています。
volume 対応させるメモリ領域を指定します。一つ目の引数がホスト側のディレクトリ、二番目の引数がコンテナ側のディレクトリ(/usr/src/app)を表しています。
tty コンテナが起動した後に標準入力を受け付けられるようにしています。

pythonファイル

サンプルとして以下を用意しました。

hello.py
def greeting():
    print("Hello World")

if __name__ == "__main__":
    greeting()

Windows Homeの際に注意すべきこと

WindowsHomeでDockerを起動する際は、Virtual Boxを介して起動していることに相当しています。そのため、マウントできるメモリ領域もVirtual Boxの設定に依存します。デフォルトではUserフォルダ配下がマウントできるようになっていますので、コンテナにマウントさせたいファイルはUserフォルダ配下に保存するようにするとよいです。なお、他のディレクトリをマウントさせる場合は、Virtual Boxの設定を変更する必要があります。

dockerの実行

Windows Homeの場合は、デスクトップにできている「Docker Quickstart Terminal」のショートカットから起動します。

image.png

ターミナル上ではLinuxライクな操作が可能です。以下の3ステップでコンテナを起動します。

  1. 作成した一連のファイルが保存されているディレクトリに移動します。(前節でも記載した通り、「C:\Users」配下であることを確認してください。)

  2. まず、下記のコマンドで、docker-compose.ymlの情報をもとにコンテナを作成し、バックグランドで起動させます。

docker-compose up -d
  1. 次に、下記のコマンドでコンテナ内に入ります。(正確にはコンテナが標準入力を受けつけられる状態にします。)
docker exec -it <コンテナ名> bash 

<コンテナ名>には今回の場合、ymlファイルで記載したpy-containerが入ります。

コンテナ内のファイルを確認するために「ls」コマンドを実行すると、確かにファイルが認識されていることが分かります。

image.png

コンテナを起動したままで、ホスト側のhello.pyで出力される文字列を「Changed Hello World」変更すると、下図のようにその変更が正しく認識されていることを確認できます。

image.png

以上で、ホスト側のソースコードの変更がコンテナ内に反映される状態を実現できました。

まとめ

今回は、コンテナを作成した後ソースコードやその変更をコンテナ内に反映させる方法を紹介しました。
- Dockerfileとdocker-compose.ymlを用意すること。
- 特別な設定をしない限り、WindowsHomeの場合は、マウントするホスト側のディレクトリはC:\Users配下にする必要があること。

を紹介しました。より効率的な方法などありましたら、教えていただけますと幸いです。

参考文献

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC2にdocker-ceとdocker-composeをインストールしてみる

EC2にdocker-ce、docker-composeをインストールしてみる。
EC2はt2.microのAmazonLinux2。

EC2起動

適当にパブリックサブネットでインスタンス起動。
SGはインバウンドのSSHのみ。

EC2ログイン

Instance Connectでログイン。
ユーザーはec2-user。

Dockerインストール

$ sudo yum -y install docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                     | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be installed
--> Processing Dependency: runc >= 1.0.0 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: containerd >= 1.3.2 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: pigz for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: libcgroup for package: docker-19.03.6ce-4.amzn2.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be installed
---> Package libcgroup.x86_64 0:0.41-21.amzn2 will be installed
---> Package pigz.x86_64 0:2.3.4-1.amzn2.0.1 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package             Arch            Version                                         Repository                  Size
======================================================================================================================
Installing:
 docker              x86_64          19.03.6ce-4.amzn2                               amzn2extra-docker           37 M
Installing for dependencies:
 containerd          x86_64          1.3.2-1.amzn2                                   amzn2extra-docker           24 M
 libcgroup           x86_64          0.41-21.amzn2                                   amzn2-core                  66 k
 pigz                x86_64          2.3.4-1.amzn2.0.1                               amzn2-core                  81 k
 runc                x86_64          1.0.0-0.1.20200204.gitdc9208a.amzn2             amzn2extra-docker          2.6 M

Transaction Summary
======================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 65 M
Installed size: 271 M
Downloading packages:
(1/5): libcgroup-0.41-21.amzn2.x86_64.rpm                                                      |  66 kB  00:00:00     
(2/5): pigz-2.3.4-1.amzn2.0.1.x86_64.rpm                                                       |  81 kB  00:00:00     
(3/5): containerd-1.3.2-1.amzn2.x86_64.rpm                                                     |  24 MB  00:00:00     
(4/5): docker-19.03.6ce-4.amzn2.x86_64.rpm                                                     |  37 MB  00:00:00     
(5/5): runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64.rpm                                     | 2.6 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                  67 MB/s |  65 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    1/5 
  Installing : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Installing : libcgroup-0.41-21.amzn2.x86_64                                                                     3/5 
  Installing : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      4/5 
  Installing : docker-19.03.6ce-4.amzn2.x86_64                                                                    5/5 
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/5 
  Verifying  : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Verifying  : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      3/5 
  Verifying  : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    4/5 
  Verifying  : libcgroup-0.41-21.amzn2.x86_64                                                                     5/5 

Installed:
  docker.x86_64 0:19.03.6ce-4.amzn2                                                                                   

Dependency Installed:
  containerd.x86_64 0:1.3.2-1.amzn2                 libcgroup.x86_64 0:0.41-21.amzn2 pigz.x86_64 0:2.3.4-1.amzn2.0.1
  runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2

Complete!
$

起動

$ sudo systemctl start docker.service
$ 
$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-06-17 15:53:56 UTC; 16s ago
     Docs: https://docs.docker.com
  Process: 4765 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
  Process: 4755 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
 Main PID: 4772 (dockerd)
    Tasks: 8
   Memory: 35.8M
   CGroup: /system.slice/docker.service
           └─4772 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1...

Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582692...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582884...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8583027...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8813748..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.1582849..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2082072..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2355901...e
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2360941..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker Application Container....
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2675511..."
Hint: Some lines were ellipsized, use -l to show in full.
$ 

自動起動設定

$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.serv
ice.
$
$ sudo systemctl list-unit-files | grep docker.service
docker.service          enabled 
$ 

ec2-userのセカンダリグループにdockerを追加

root権限以外のユーザーでdockerコマンドを実行するには
毎回sudoするか、dockerグループに所属するかのいずれかが必要。
ここではグループ追加をしておく。

$ sudo usermod -a -G docker ec2-user
$
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
$ 

グループ追加がカレントシェルに反映されていない。
一旦ログアウトして接続し直してから再びidコマンド。

$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal),993(docker)
$ 

グループ追加が反映された。

dockerコマンドが実行できることの確認

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

docker-composeインストール

docker-composeは複数のコンテナのビルドや起動/停止をまとめて行うことが出来るツール。
使い方は ①dockerfile作成 ②docker-compose.yml作成 ③docker-compose実行 といった流れ。
まずはdocker公式に書かれているコマンドでインストール。
https://docs.docker.com/compose/install/

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compos
e-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   2006      0 --:--:-- --:--:-- --:--:--  2006
100 11.6M  100 11.6M    0     0  3325k      0  0:00:03  0:00:03 --:--:-- 4044k
$ 
$ sudo chmod +x /usr/local/bin/docker-compose
$ 

docker-composeコマンドが実行できることの確認

$ dockser-compose --version
docker-compose version 1.26.0, build d4451659
$ 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC2にdockerとdocker-composeをインストールしてみる

EC2にdockerとdocker-composeをインストールしてみる。

EC2起動

パブリックサブネットで適当にインスタンス起動。
SSHログインができるようSGはインバウンドのSSHを空けておく。

EC2ログイン

SSHクライアント(Teraterm等)でもInstant Conectでもやり方は何でもよいのでインスタンスにSSH接続する。ユーザーはec2-user。

Dockerインストール

$ sudo yum -y install docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                     | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be installed
--> Processing Dependency: runc >= 1.0.0 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: containerd >= 1.3.2 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: pigz for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: libcgroup for package: docker-19.03.6ce-4.amzn2.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be installed
---> Package libcgroup.x86_64 0:0.41-21.amzn2 will be installed
---> Package pigz.x86_64 0:2.3.4-1.amzn2.0.1 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package             Arch            Version                                         Repository                  Size
======================================================================================================================
Installing:
 docker              x86_64          19.03.6ce-4.amzn2                               amzn2extra-docker           37 M
Installing for dependencies:
 containerd          x86_64          1.3.2-1.amzn2                                   amzn2extra-docker           24 M
 libcgroup           x86_64          0.41-21.amzn2                                   amzn2-core                  66 k
 pigz                x86_64          2.3.4-1.amzn2.0.1                               amzn2-core                  81 k
 runc                x86_64          1.0.0-0.1.20200204.gitdc9208a.amzn2             amzn2extra-docker          2.6 M

Transaction Summary
======================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 65 M
Installed size: 271 M
Downloading packages:
(1/5): libcgroup-0.41-21.amzn2.x86_64.rpm                                                      |  66 kB  00:00:00     
(2/5): pigz-2.3.4-1.amzn2.0.1.x86_64.rpm                                                       |  81 kB  00:00:00     
(3/5): containerd-1.3.2-1.amzn2.x86_64.rpm                                                     |  24 MB  00:00:00     
(4/5): docker-19.03.6ce-4.amzn2.x86_64.rpm                                                     |  37 MB  00:00:00     
(5/5): runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64.rpm                                     | 2.6 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                  67 MB/s |  65 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    1/5 
  Installing : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Installing : libcgroup-0.41-21.amzn2.x86_64                                                                     3/5 
  Installing : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      4/5 
  Installing : docker-19.03.6ce-4.amzn2.x86_64                                                                    5/5 
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/5 
  Verifying  : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Verifying  : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      3/5 
  Verifying  : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    4/5 
  Verifying  : libcgroup-0.41-21.amzn2.x86_64                                                                     5/5 

Installed:
  docker.x86_64 0:19.03.6ce-4.amzn2                                                                                   

Dependency Installed:
  containerd.x86_64 0:1.3.2-1.amzn2                 libcgroup.x86_64 0:0.41-21.amzn2 pigz.x86_64 0:2.3.4-1.amzn2.0.1
  runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2

Complete!
$

起動

$ sudo systemctl start docker.service
$ 
$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-06-17 15:53:56 UTC; 16s ago
     Docs: https://docs.docker.com
  Process: 4765 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
  Process: 4755 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
 Main PID: 4772 (dockerd)
    Tasks: 8
   Memory: 35.8M
   CGroup: /system.slice/docker.service
           └─4772 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1...

Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582692...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582884...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8583027...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8813748..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.1582849..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2082072..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2355901...e
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2360941..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker Application Container....
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2675511..."
Hint: Some lines were ellipsized, use -l to show in full.
$ 

自動起動設定

$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.serv
ice.
$
$ sudo systemctl list-unit-files | grep docker.service
docker.service          enabled 
$ 

ec2-userのセカンダリグループにdockerを追加

root権限以外のユーザーでdockerコマンドを実行するには
毎回sudoするか、dockerグループに所属するかのいずれかが必要。
ここではグループ追加をしておく。

$ sudo usermod -a -G docker ec2-user
$
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
$ 

グループ追加がカレントシェルに反映されていない。
一旦ログアウトして接続し直してから再びidコマンド。

$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal),993(docker)
$ 

グループ追加が反映された。

dockerコマンドが実行できることの確認

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

docker-composeインストール

docker-composeは複数のコンテナのビルドや起動/停止をまとめて行うことが出来るツール。
使い方は ①dockerfile作成 ②docker-compose.yml作成 ③docker-compose実行 といった流れ。
まずはdocker公式に書かれているコマンドでインストール。
https://docs.docker.com/compose/install/

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compos
e-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   2006      0 --:--:-- --:--:-- --:--:--  2006
100 11.6M  100 11.6M    0     0  3325k      0  0:00:03  0:00:03 --:--:-- 4044k
$ 
$ sudo chmod +x /usr/local/bin/docker-compose
$ 

docker-composeコマンドが実行できることの確認

$ dockser-compose --version
docker-compose version 1.26.0, build d4451659
$ 

 
 

以上です。おつかれさまでした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC2(Amazon Linux 2)にdockerとdocker-composeをインストールしてみる

EC2にdockerとdocker-composeをインストールしてみる。

EC2起動

パブリックサブネットで適当にインスタンス起動。
SSHログインができるようSGはインバウンドのSSHを空けておく。

EC2ログイン

SSHクライアント(Teraterm等)でもInstant Conectでもやり方は何でもよいのでインスタンスにSSH接続する。ユーザーはec2-user。

Dockerインストール

$ sudo yum -y install docker
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                     | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package docker.x86_64 0:19.03.6ce-4.amzn2 will be installed
--> Processing Dependency: runc >= 1.0.0 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: containerd >= 1.3.2 for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: pigz for package: docker-19.03.6ce-4.amzn2.x86_64
--> Processing Dependency: libcgroup for package: docker-19.03.6ce-4.amzn2.x86_64
--> Running transaction check
---> Package containerd.x86_64 0:1.3.2-1.amzn2 will be installed
---> Package libcgroup.x86_64 0:0.41-21.amzn2 will be installed
---> Package pigz.x86_64 0:2.3.4-1.amzn2.0.1 will be installed
---> Package runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================
 Package             Arch            Version                                         Repository                  Size
======================================================================================================================
Installing:
 docker              x86_64          19.03.6ce-4.amzn2                               amzn2extra-docker           37 M
Installing for dependencies:
 containerd          x86_64          1.3.2-1.amzn2                                   amzn2extra-docker           24 M
 libcgroup           x86_64          0.41-21.amzn2                                   amzn2-core                  66 k
 pigz                x86_64          2.3.4-1.amzn2.0.1                               amzn2-core                  81 k
 runc                x86_64          1.0.0-0.1.20200204.gitdc9208a.amzn2             amzn2extra-docker          2.6 M

Transaction Summary
======================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 65 M
Installed size: 271 M
Downloading packages:
(1/5): libcgroup-0.41-21.amzn2.x86_64.rpm                                                      |  66 kB  00:00:00     
(2/5): pigz-2.3.4-1.amzn2.0.1.x86_64.rpm                                                       |  81 kB  00:00:00     
(3/5): containerd-1.3.2-1.amzn2.x86_64.rpm                                                     |  24 MB  00:00:00     
(4/5): docker-19.03.6ce-4.amzn2.x86_64.rpm                                                     |  37 MB  00:00:00     
(5/5): runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64.rpm                                     | 2.6 MB  00:00:00     
----------------------------------------------------------------------------------------------------------------------
Total                                                                                  67 MB/s |  65 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    1/5 
  Installing : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Installing : libcgroup-0.41-21.amzn2.x86_64                                                                     3/5 
  Installing : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      4/5 
  Installing : docker-19.03.6ce-4.amzn2.x86_64                                                                    5/5 
  Verifying  : docker-19.03.6ce-4.amzn2.x86_64                                                                    1/5 
  Verifying  : containerd-1.3.2-1.amzn2.x86_64                                                                    2/5 
  Verifying  : pigz-2.3.4-1.amzn2.0.1.x86_64                                                                      3/5 
  Verifying  : runc-1.0.0-0.1.20200204.gitdc9208a.amzn2.x86_64                                                    4/5 
  Verifying  : libcgroup-0.41-21.amzn2.x86_64                                                                     5/5 

Installed:
  docker.x86_64 0:19.03.6ce-4.amzn2                                                                                   

Dependency Installed:
  containerd.x86_64 0:1.3.2-1.amzn2                 libcgroup.x86_64 0:0.41-21.amzn2 pigz.x86_64 0:2.3.4-1.amzn2.0.1
  runc.x86_64 0:1.0.0-0.1.20200204.gitdc9208a.amzn2

Complete!
$

起動

$ sudo systemctl start docker.service
$ 
$ sudo systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-06-17 15:53:56 UTC; 16s ago
     Docs: https://docs.docker.com
  Process: 4765 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
  Process: 4755 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
 Main PID: 4772 (dockerd)
    Tasks: 8
   Memory: 35.8M
   CGroup: /system.slice/docker.service
           └─4772 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1...

Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582692...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8582884...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8583027...c
Jun 17 15:53:55 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:55.8813748..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.1582849..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2082072..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2355901...e
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2360941..."
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal systemd[1]: Started Docker Application Container....
Jun 17 15:53:56 ip-172-31-14-246.ap-northeast-1.compute.internal dockerd[4772]: time="2020-06-17T15:53:56.2675511..."
Hint: Some lines were ellipsized, use -l to show in full.
$ 

自動起動設定

$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.serv
ice.
$
$ sudo systemctl list-unit-files | grep docker.service
docker.service          enabled 
$ 

ec2-userのセカンダリグループにdockerを追加

root権限以外のユーザーでdockerコマンドを実行するには
毎回sudoするか、dockerグループに所属するかのいずれかが必要。
ここではグループ追加をしておく。

$ sudo usermod -a -G docker ec2-user
$
$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
$ 

グループ追加がカレントシェルに反映されていない。
一旦ログアウトして接続し直してから再びidコマンド。

$ id
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal),993(docker)
$ 

グループ追加が反映された。

dockerコマンドが実行できることの確認

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

docker-composeインストール

docker-composeは複数のコンテナのビルドや起動/停止をまとめて行うことが出来るツール。
使い方は ①dockerfile作成 ②docker-compose.yml作成 ③docker-compose実行 といった流れ。
まずはdocker公式に書かれているコマンドでインストール。
https://docs.docker.com/compose/install/

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compos
e-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0   2006      0 --:--:-- --:--:-- --:--:--  2006
100 11.6M  100 11.6M    0     0  3325k      0  0:00:03  0:00:03 --:--:-- 4044k
$ 
$ sudo chmod +x /usr/local/bin/docker-compose
$ 

docker-composeコマンドが実行できることの確認

$ dockser-compose --version
docker-compose version 1.26.0, build d4451659
$ 

 
 

以上です。おつかれさまでした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む