現在ec2を立ち上げて、そこからDockerfileを作成、ビルド、コンテナの起動をして、そのコンテナに接続できるか確認しています。
Dockerfile
1FROM centos:latest 2 3RUN yum install -y httpd 4 5EXPOSE 80 6RUN echo "Hello Apache." > /var/www/html/index.html 7 8CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"] 9#ENTRYPOINT ["/usr/sbin/httpd","-DFOREGROUND"] 10#ENTRYPOINTでもCMD両方を試しましたが、どちらも結果として接続できませんでした。
Dockerfileはhttpdをインストールしてhttpdをフォアグラウンドで実行するだけのものです。
以下手続きを書いていきます。
# ビルドを実行 docker image build -t dockerpractice ./ # コンテナを実行 docker run -d -p 8080:80 dockerpractice # コンテナのhttpdが起動しているか確認 docker exec -it (コンテナID) /bin/bash ps -ef # 確認するとapacheが動いていることを確認できています。 # ブラウザでdocerコンテナのwebサーバーに以下のurlで接続を試みるが接続できない (ec2パブリックIP):8080
その他試したこと
- dockerを使わないでec2インスタンスに直接httpdをインストールして接続すると、接続することができています。 -> httpに関するセキュリティグループ(ポート80)に関しては問題ないことはわかっている。
また、dockerを使わないと接続できていることから、原因はdockerを使っていることに起因する何かだと推測している。
- Dockerfileの使用イメージは、”FROM centos:latest”と”FROM centos:centos7.2.1511”を試していますが、両方結果として接続できないでいます。コンテナの起動には問題ないと思われる。
参考
ps -efコマンド実行結果は以下になります。
# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 6 1 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 7 1 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 8 1 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 9 1 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 10 1 0 23:39 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 11 0 3 23:39 pts/0 00:00:00 /bin/bash root 24 11 0 23:39 pts/0 00:00:00 ps -ef
回答1件
あなたの回答
tips
プレビュー