0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker】Imageをリモートでrunするには no.29

Posted at

パンプキン カフェ (9).png

こんにちは。まゆみです。

Dockerについての記事をシリーズで書いています

前回の記事では、AWSのEC2インスタンスにDockerをインストールするところまで解説しました。

今回の記事では、ローカルで作ったImageをリモートにpullしてrun する方法を書いていこうと思います。

そうする事によって、IPアドレスを使って世界中からあなたのアプリにアクセスできるようになります\(^o^)/

ではさっそく始めていきますね。

LocalでImageを作ってRemoteからPullする

Docker hub (2).png

リモートでImageからContainerを作るためには、『ローカルで』Imageを作り、『Docker hubを経由して』リモートからpull します

ではまず、Docker hub にリポジトリ―を作るところからはじめて行きましょう

docker hub にリポジトリーを作る

docker hubにログインした後、『Create Repository』をクリックします

2021-07-05_8-11-08.png

Repositoryに好きな名前を付けましょう(のちにImageをpushする時に必要になります)
そのあと、『Create』ボタンをクリックしましょう

2021-07-05_8-14-04.png

Repository ができました。

これで、ImageをここにPushすることができます

2021-07-05_8-16-38.png

.dockerignoreファイルを作る

.dockerignoreファイルを作って、

node_modules
Dockerfile
*.pem

とファイルに書き、Imageをbuildする時に無視するファイルを指定します

(*.pem は『.pem拡張子のついたファイルは全て』を意味します

ローカルでImageをbuildする

今あなたがプロジェクトフォルダーにいることを確かめ、Imageをbuildします。
-tオプションを付けて、Imageに名前を付けて実行しましょう

docker build -t <Image名> .

これでローカルにImageが作られました。

docker hub にpush する

ローカルで作ったImageをdocker hubのリポジトリ―にpushしたいのですが、

リポジトリ―名 = Image名

でないと、pushできません。

tag を使って、Imageの名前を変える

docker tag <Image名> <リポジトリ―名>

先ほど、ローカルでImageをbuild する時に-t を付けてImageに名前を付けました。

そのImage名と、docker hubで作ったリポジトリ―名を使ってImageの名前を変更します

2021-07-05_8-50-36.png

docker images

で作ったImageのリストを出すと、変更した名前のImageができているのが分かります

2021-07-05_8-56-25.png

Imageをdocker hub にpushする

docker push <リポジトリ―名>

でImageをpushします

では次にいよいよリモートからImageを引っ張ってrun していきます

EC2インスタンスの中に入る

リモートからdocker hubのImageを引っ張ってきてrun するので、まずEC2インスタンスの中に入りましょう

(EC2インスタンスの中に入る方法が分からない方はこちらの記事を参考にどうぞ)

docker のコマンドrun を使う

予めEC2にdockerをインストールしているので、dockerのコマンドが使えます(EC2にdockerをインストールしていない方はこちらの記事を参考にどうぞ)

docker run ....では、『Got permission denied...』とエラーが出たので、sudo をつけて改めてrunしてみます

結果は下のスクショのようになります

2021-07-05_10-47-29.png

docker hub からイメージをpullしてきて、リモート上にContainerを立ち上げることができました。

どのように、コンテナ化したnodeアプリにアクセスしたら良いのだろうか。。。.png

Containerが実行中になったので、このままこのインスタンスに付与されたIPアドレスにアクセスしたら良いのでしょうか。。。?

2021-07-05_11-02-16.png

実行中のインスタンスのパブリックIPアドレスにアクセスを試みましたが、アクセスできません。

これは、バグではなく、

EC2インスタンスのディフォルト値では、セキュリティグループのインバウンドルールによって、インスタンスの中に入ってくるリクエストは全て拒否されるからです。

2021-07-05_11-08-50.png
引用元:awsドキュメント

AWSでのインバウンドルールをどのように更新したら良いのかを記事を改めて書いていきますね。

まとめ

とりあえず、EC2インスタンスでContainerをrun することには成功しましたので、次回AWSのセキュリティの方をいじって世界中からアプリにアクセスできるようにしていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?