はじめに
インスタンス上で開発したいけど、やり方がわからなかった自分のために作りました。
環境はmacOS Mojave 10.14.6
追記
追記1:
おそらく固定IPにしていないと、閉じた時に設定が使えなくなってしまうので、そこにも対応しました。
追記2:
docker-composerがbuildできるversionをインストールするように変更しました。
追記3:
AMIを追記しました。
やること
1.DockerからEC2を作る
2.ssh接続してDockerが使えるかの確認
3.コマンド
1.DockerからEC2を作る
まずはじめにdocker-machine
機能を使ってインスタンスを作りましょう。
自分のAWSアカウントのアクセスキーとシークレットキーを準備してください。またAWS-Cli
でconfigure
の設定が済んでいて、使うアカウントがdefault
に設定されている場合、やらなくても済むかもしれません。
# 使うプロファイルの確認
$ cat ~/.aws/credentials
export AWS_ACCESS_KEY_ID=この中に自分のアクセスキー
export AWS_SECRET_ACCESS_KEY=この中に自分のシークレットキー
# うまくいっているかの確認は
$ aws configure list
一応以下のコマンドでもできるらしいですが、自分はうまくいかなかったので保証はしません。
$ export AWS_DEFAULT_PROFILE=任意のプロファイル名
$ aws configure list # ここでプロファイル名で適応されているか確認してください。
そうしたらインスタンスをたてていきます。
# Macで逆スラッシュは option + ¥ です
$ docker-machine create \
--driver amazonec2 \
--amazonec2-ami "" \
--amazonec2-instance-type "t2.micro" \ # これはデフォルトの場合です
--amazonec2-root-size "16" \ # docker-machineのデフォルトのサイズ
--amazonec2-region 好みのregion \
--amazonec2-vpc-id カスタムするVPCのID \ # デフォルトの人はいらないかもしれません
--amazonec2-subnet-id カスタムするsubnetのID \ # 同上
--amazonec2-security-group カスタムするセキュリティグループの名 \ # 同上
インスタンス名
追記
ここで固定IPを設定します。
Elastic IPで新しいアドレスの割り当て
を行なった後、作ったインスタンスに対してアクション
から関連付け
を行なってください。
そうするとdocker-machine ls
を行うとわかるのですが、IPが変わったことによってERRORが発生しています。ですので以下のコマンドで修正します。
$ docker-machine regenerate-certs ホスト名
docker-machine ls
のコマンドで確認するとURL
のところがElastic IP
で設定したものに変っていると思います。
続き
AWSの秘密鍵は作られているのですが、私はどこにあるかわからないので、わかる人がいたらコメントお願いします。なのでDockerでSSH接続していきます。そのためにまず環境変数を用意します。
$ docker-machien ls # これで使うホストの名前を確認
$ docker-machine env ホスト名
set -gx DOCKER_TLS_VERIFY "x";
set -gx DOCKER_HOST "tcp://xxxxxxxxxxxxx";
set -gx DOCKER_CERT_PATH "/Users/xxx/xxxxx";
set -gx DOCKER_MACHINE_NAME "ホスト名";
# Run this command to configure your shell:
# eval (docker-machine env ホスト名)
$ eval (docker-machine env ホスト名) # 出てきたものをコピペすれば良いと思います
ACTIVE
のところが*
になっていれば大丈夫です。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
ホスト名 * amazonec2 Running tcp://xxxxxxxxxx:xxxx v19.03.7
そしたら、以下の通りにしてください。
$ docker-machine inspect ホスト名
{
"ConfigVersion": 3,
"Driver": {
"IPAddress": "ホストのIP",
"MachineName": "ホスト名",
"SSHUser": "ubuntu",
"SSHPort": 22,
"SSHKeyPath": "/Users/xxxx/.docker/machine/machines/docker-env/id_rsa",
:
:
}
# SSHKeyPathのとこをコピペして使ってます
$ chmod 400 /Users/xxxx/.docker/machine/machines/docker-env/id_rsa
$ chmod 700 ~/.ssh
$ vi ~/.ssh/config
# --- ホスト名 -------------
Host ホスト名
HostName ホストのIP(Elastic IPを使う人はElasticの方のアドレスを使う)
User ubuntu
IdentityFile /Users/xxxx/.docker/machine/machines/docker-env/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes
# -------------------------
最後に以下のコマンドでSSH接続できれば、下準備は完了です。
2.ssh接続してDockerが使えるかの確認
$ ssh ホスト名
dockerがインストールされてるか確認してみてください。
$ docker --version
Docker version 19.03.7, build xxxxxxx
$ docker-compose --version
The program 'docker-compose' is currently not installed. You can install it by typing:
sudo apt install docker-compose
docker-compose
はインストールされていないですね。コマンドも出ているのでその通りにインストールしましょう。
最新バージョンはここを確認してください
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ export PATH=$PATH:/usr/local/bin/
$ source ~/.bashrc
最後にもうひと手間やっちゃいましょう。
今のままではdocker
に関連するコマンドを打つたびに、先頭にsudo
をつけなくてはなりません。
なのでそうしなくて済むように設定しましょう。
# dockerグループは作られていると思いますがもしなかったら打ち込んでください
sudo groupadd docker
# 現行ユーザをdockerグループに所属させる
sudo gpasswd -a $USER docker
# sudoもめんどくさいので追加しておく
sudo gpasswd -a $USER sudo
# dockerデーモンを再起動する (CentOS7の場合)
sudo systemctl restart docker
# 再ログインが必要なので一旦exitして入り直してください
exit
3.コマンド
止める時は以下のコマンドを叩けば大丈夫です。あと環境変数は戻しておきましょう。
$ docker-machine stop ホスト名
# 強制で止める時はkill 始める時はstart 再起はrestart
$ docker-machine env --unset
set -e DOCKER_TLS_VERIFY;
set -e DOCKER_HOST;
set -e DOCKER_CERT_PATH;
set -e DOCKER_MACHINE_NAME;
# Run this command to configure your shell:
# eval (docker-machine env --unset)
$ eval (docker-machine env --unset)
おわりに
SSH接続ができると色々と便利ですね。
参考
MacのTerminalで「 ssh 接続名」で SSH 接続
docker-machineコマンド
Dockerコマンドをsudoなしで実行する方法
Ubuntu18.04.1でDockerとdocker-composeをインストールする方法