Docker

【Dockerエラー】Error response from daemon: dial unix docker.raw.sock: connect: connection refusedの意外な原因とDvwaをDockerで立ち上げる方法

投稿日: カテゴリー: IT技術
Pocket

Error response from daemon: dial unix docker.raw.sock: connect: connection refused

スキャナの自作のためDVWAをDockerで立ち上げようとしたところ、「docker ps」「docker info」を叩いても上記のエラーが出るにも関わらず、
Dockerのプロセス自体は立ち上がるし、「docker version」はきちんと返ってくるという状態でした。
このエラーに関してはいろいろと解決策が見つかりますがどうも解決しませんでした。私の利用してるMac環境の最上部のバーのDockerのクジラアイコンを押して出てくるメニューもRunningとなっていると諦めかけたとき、IDとパスワードが要求されていることに気がつきました。そうログインしていませんでした。

結論:Dockerにログインすると解消する

エラーの原因の多くは当たり前の裏にあります。人間無意識成分8割以上の仕様なので、こういったミスをなくすのは簡単ではないですが

DVWAをDockerで立ち上げる

今回、Dockerを立ち上げた目的はDVWAをDockerで立ち上げることでした。
Damn Vulnerable Web AppことDVWAはPHP/MySQLベースの脆弱性が意図的に実装された有名なやられサイトです。
そんなDVWAがdockerhubに出ていることを見つけたため、利用しようとしてみたところ冒頭のエラーでつまづいたわけです。
公式の記事はこちら(https://hub.docker.com/r/vulnerables/web-dvwa)です。
それでは早速pullコマンドを実行してセットアップしていきます。
$ docker pull infoslack/dvwa
$ docker images
きちんと作成されていることが確認できます。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

infoslack/dvwa      latest              779975a3607d        3 years ago         465MB

$ docker run -d -p 80:80 -p 3306:3306 -e MYSQL_PASS=”mypass” infoslack/dvwa
$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES

0720028e98ab        infoslack/dvwa      "/run.sh"           3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:3306->3306/tcp   eager_einstein

以下にアクセスし「Create/Reset Database」
http://localhost/setup.php
http://192.168.11.3/setup.php

dvwa_setup

処理が完了するとログイン画面が表示されるので「admin/password」でログインします。

dvwa_login

 

Dockerお役立ちTips

Dockerを利用する際、ど忘れしがちな何より投稿者自身に役立つTipsです。皆さんにもお役に立てれば幸いです。

コンテナに設定されているIPアドレスを調べる

方法1 inspectコマンドを利用する

$ docker psでコンテナIDを確認します。
inspectコマンドを利用すると返ってくるのだが返る情報が多すぎるのでgrepをパイプすることを勧めます。
$docker inspect <コンテナID> |grep IPAdd

方法2 bashで入って確認する

$ docker psでコンテナIDを確認します
bashで入ります。
docker exec -it <コンテナID> /bin/bash
以下のコマンドでIPを取得できます。
#hostname -i

コンテナ内のファイルをホストPCに取り出す

逆つまりホストPCからDockerコンテナ内にファイルを突っ込むこともできます。
docker cp <コンテナID>:コンテナ内のファイルパス ホストのディレクトリパス

Dockerコンテナのログを確認する

以下のコマンドで確認できます。
#docker logs -t <コンテナID>

Dockerコンテナの再起動

docker restart <コンテナID>

Dockerコンテナへの接続

以下の操作もセットで覚えておきましょう。
プロセス終了→ Ctrl + p
コンテナ終了→ Ctrl + c
docker attach <コンテナID>

以上です。参考になりましたら幸いです。