20240102Docker備忘録3(失敗→できました)
こちらは、パソコン素人です。
Docker素人です。
以下違いだらけです。自分用メモ。
(もし、投稿内容(引用等)に不具合がありましたら、削除いたしますので、ご指摘下さい。)
「Docker」というものがあるらしい。
ウィキペディアを見たが、よくわからない。
*************************************************
前回まで・・・
youtubeで解説されている方がおいでたので、試しに見てみました。(「だれでもエンジニア様」他いろんな皆様。感謝いたします。)
「だれでもエンジニア様」のを見ながら、インストール等したみた。
この動画は2021年時点のようで、少しインストール方法など変わっているのかもしれません。
注意。前回失敗しています。
*********************************************
今回:
前回失敗しています・・・からできました。(正しいかは分からない)
今回も上記、「だれでもエンジニア様」のをまねてみる。
前回の後半部分:
「Dockerのイメージ作り、コンテナ作成起動をやってみる・・・。」(イメージとコンテナの基本操作)(ウィンドウズでやってます。)
前回やったこと////////////////////////
(1)main.rb
require 'webrick'
server = WEBrick::HTTPServer.new(
DocumentRoot: './',
BindAddress: '0.0.0.0',
port: 8000
)
server.mount_proc('/') do |req,res|
res.body = 'hello'
end
server.start
(2)Dockerfile
FROM ruby:2.7
RUN mkdir /var/www
COPY main.rb /var/www
CMD ["ruby","/var/www/main.rb"]
それらを以下のようにイメージ作成、コンテナ起動。(3)(4)
(3)docker image build -t sample/webrick:latest .
※「.」を忘れないこと
(4)docker container run -p 8000:8000 --name webrick sample/webrick:latest
上記(3)(4)はうまくいっているハズ・・・・?
**************************************
これで、ブラウザで「localhost:8000」で、アクセスできるはず・・・。
見ることができない。
このページは現在機能していません。
localhostからデータは送信されませんでした。
ERR_EMPTY_RESPONSE
ERR_CONECTED_REFUSEDの時もあり。
:::::::::::::::::::::::::::::::::::::
今回:いろいろやった。
最初に、(1)で、VSコードを使用する時、documentsというディレクトリでやっていた。ふと、documentsでなく、dockerというディレクトリでないかと思った。
(準備として、上記でする前に、前回試してダメだった
「%USERPROFILE%ディレクトリ(ユーザーホームディレクトリ)に.wslconfigという名前のファイルを作成」を削除した。つまり元の状態にした。)
で、やってみたが、失敗。
VSコードも初心者だが、ディレクトリが違うと、コードが見れたり見れなかったりしたので、そうなのかと思ったのだが。
次に、ふと、「ubuntuでない」のでは?と思った。
YouTubeの画面は、windowsでなくmacだが、ubuntuでないのかもしれない。
そこで、もう一度やり直す。
docker desktopを立ち上げておく。
(今まで、サインインしていなかったが、それも原因かもしれないので、サインインした。他にも使わないイメージはdesktopでdeleteした。)
vsコードでubuntuを使わず、(1)(2)を作成。
(3)(4)もやってみる・・・でもだめだった。
うーん。ふとBingChatに聞いた回答を確認・・・。
①ファイアウォールの設定: ファイアウォールがポート8000をブロックしている可能性があります。ファイアウォールの設定を確認し、ポート8000が許可されていることを確認してください。 ・・・ファイヤーウォールやウイルス対策ソフトを疑うが、そうでもなさそう。。。
②IPアドレスの設定: localhostは自分自身を指すIPアドレスです。もしDockerコンテナが別のマシンで動作している場合、localhostではなく、そのマシンのIPアドレスを使用する必要があります。Dockerコンテナが動作しているマシンのIPアドレスを確認し、http://
③省略
④コンテナ内のポート番号: コンテナ内で起動しているアプリケーションが、8000番ポートでリッスンしていることを確認してください。コンテナ内でアプリケーションを起動する際に、正しいポート番号を指定しているかどうかを確認してください。・・・80だった。。。(1)のportを80に。及び(4)の8000:8000を8000:80にしたら、すんなり、edgeでも、chromeでも「localhost:8000」helloの表示が出た。(修正)
何か数年で変わったのか、ウィンドウズだからなのか、自分が分かってないからだろう。