2016-08-17 6 views
0

this docker imageを使用していて、これをコンテナとして正常に実行できました(dockerhubにあるdocker runコマンドを使用)。しかし、私はそのコンテナの/ var/www /フォルダを永続的にしたいと思っていました。dockerでは、データボリュームコンテナをコンテナにマウントすると、動作が停止するのはなぜですか?

このコマンドを使用して、ボリュームにマップされたコンテナを実行しようとしました。

docker run -v /home/ejandra/ispconfig:/var/www --name ispconfig -e MAILMAN_EMAIL_HOST=test.com -e [email protected] -e MAILMAN_PASS=pass -d -p 20:20 -p 21:21 -p 30000:30000 -p 30001:30001 -p 30002:30002 -p 30003:30003 
-p 30004:30004 -p 30005:30005 -p 30006:30006 -p 30007:30007 -p 30008:30008 -p 30009:30009 -p 80:80 -p 443:443 -p 8080:8080 -p 53:53 -p 2222:22 jerob/docker-ispconfig /start.sh 

これは、/var/wwwの内容はいずれかのデータボリュームにマッピングすることです。シェルのアクセスで/var/wwwに新しいテキストファイルを追加しようとする度に、ファイルが/home/ejandra/ispconfigに表示されるため、ボリュームマッピングが機能します。しかし、https://my-ip:8080に行くと、私のブラウザに「サイトにアクセスできません」と表示されます。データボリュームを追加した後、コンテナが突然停止した原因は何ですか?

+0

私は、それを自分のドッキングウィンドウコンテナを試してみましたエラーが発生しました。エラー:「userland proxy:listen tcp 0.0.0.0:53:bind:address already in use。」がスローされ、コンテナが停止します。その場合、コンテナが動作していないため、https:// localhost:8080にアクセスできません。 – silgon

+0

こんにちは、私はあなたの0.0.0.0:53が使用中であることを意味すると思います。ポートを変更するか、0.0.0.0:53で実行中のプロセスを停止する必要があります。 – ejandra

答えて

1

まず、すべてのものをホストマシン上のフォルダにコピーしてからコンテナを実行することで、自分が望むものを実現できました。だから、これは私がやったことです:あなたは通常どおり

まず、コンテナを実行します。

sudo docker run -name ispconfig -e MAILMAN_EMAIL_HOST=test.com \ 
    -e [email protected] -e MAILMAN_PASS=pass -d \ 
    -p 20:20 -p 21:21 -p 30000:30000 -p 30001:30001 -p 30002:30002 \ 
    -p 30003:30003 -p 30004:30004 -p 30005:30005 -p 30006:30006 \ 
    -p 30007:30007 -p 30008:30008 -p 30009:30009 -p 80:80 -p 443:443 \ 
    -p 8080:8080 -p 53:53 -p 2222:22 jerob/docker-ispconfig /start.sh 

を次に容器及びタールの内側に移動して、ホストマシンに既存のフォルダをコピーします。

$ sudo docker exec -ti ispconfig bash 
[email protected]:/# DEFAULT_ROUTE=$(ip route show default \ 
        | awk '/default/ {print $3}') 
[email protected]:/var/www# tar -cvzf /tmp/www.tar.gz /var/www/ 
tar: Removing leading `/' from member names 
/var/www/ 
/var/www/php-fcgi-scripts/ 
/var/www/php-fcgi-scripts/ispconfig/ 
/var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter 
/var/www/php-fcgi-scripts/apps/ 
/var/www/php-fcgi-scripts/apps/.php-fcgi-starter 
/var/www/ispconfig 
/var/www/html/ 
/var/www/html/index.html 
/var/www/apps/ 
/var/www/webalizer/ 
[email protected]:/# scp -rv /tmp/www.tar.gz [email protected]${DEFAULT_ROUTE}: 
The authenticity of host '172.17.42.1 (172.17.42.1)' can't be established. 
ECDSA key fingerprint is 7d:77:b7:54:3a:a5:00:37:94:55:4b:68:8d:2c:89:26. 
Are you sure you want to continue connecting (yes/no)? yes 
[email protected]'s password: 

その後、コンテナを終了して削除します。 、今

$ sudo tar -xf /tmp/www.tar.gz -C /home/nwani/ 
$ sudo ls /home/nwani/var/www/ -l 
total 16 
drwxr-xr-x 2 5002 5003 4096 Sep 3 2015 apps 
drwxr-xr-x 2 root root 4096 Sep 3 2015 html 
lrwxrwxrwx 1 root root 34 Sep 3 2015 ispconfig -> /usr/local/ispconfig/interface/web 
drwxr-xr-x 4 root root 4096 Sep 3 2015 php-fcgi-scripts 
drwxr-xr-x 2 root root 4096 Sep 3 2015 webalizer 

再びコンテナを実行しますが、この時、データディレクトリをマウントします:

[email protected]:/# exit 
$ sudo docker rm -f ispconfig 

次にコピーしたtarボールを展開

sudo docker run -name ispconfig -v /home/nwani/var/www/:/var/www \ 
    -e MAILMAN_EMAIL_HOST=test.com -e [email protected] \ 
    -e MAILMAN_PASS=pass -d -p 20:20 -p 21:21 -p 30000:30000 \ 
    -p 30001:30001 -p 30002:30002 -p 30003:30003 -p 30004:30004 \ 
    -p 30005:30005 -p 30006:30006 -p 30007:30007 -p 30008:30008 \ 
    -p 30009:30009 -p 80:80 -p 443:443 -p 8080:8080 -p 53:53 \ 
    -p 2222:22 jerob/docker-ispconfig /start.sh 
+0

これは、面倒なく私のために働いたサー!ありがとう!私は質問があります、なぜ私は最初に永続化したいフォルダをコピーする必要がありますか?私が追跡したドッカー文書(https://docs.docker.com/engine/tutorials/dockervolumes/)はこれについて何も説明しなかったか、それとも私はそれを見逃しましたか? – ejandra

+0

@ nowrn29あなたが使用しているドッカー画像は、特定のディレクトリに、特定のシンボリックリンクがあり、一定のコンテンツを持っていて、 '/ var/www'の場所に特定のパーミッションを持っていると仮定しています): –

+0

多くのありがとうございました! – ejandra

関連する問題