0

docker websiteのこのチュートリアルによると、コンテナを起動すると、/Users/username .

私の現在の問題:

しかし、私の学校では、私$HOMEは .com にありません。また、(リンクのチュートリアルの/Usersように) コンテナーにボリュームを直接マウントしようとすると、マウントdocker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginxされたボリュームを介してファイルを変更できません。だから私$HOMEは自動的に共有されていないと思います。

しかし、実行すると次のdocker instpect mysiteようになります:

"HostConfig": {
    "Binds": [
        "/nfs/zfs-student-3/users/vmonteco/site:/usr/share/nginx/html"
    ],

"Mounts": [
    {
        "Source": "/nfs/zfs-student-3/users/vmonteco/site",
        "Destination": "/usr/share/nginx/html",
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    } 

私の質問は単にこれです:

ディレクトリを VM ホスティング Docker (ここでは virtualbox) と手動で共有して、ボリュームのマウント ポイントとして使用するにはどうすればよいですか?

これは、非推奨になる前に Boot2docker で行った方法です。

boot2dockerを使用すると、次のようなものを実行できます。

SHAREDIR=$HOME/share
# creating share folder.
mkdir $SHAREDIR

# mount shared folder while relaunching boot2docker :
boot2docker --vbox-share="$SHAREDIR=share" up
echo "Creating and mounting \"share\" directory in boot2docker VM."
boot2docker ssh "sudo mkdir /share; sudo mount -t vboxsf share /share"

# running the container :
docker run  -ti --rm -v /share:/share -v /Users:/Users base/archlinux sh

そして、それはうまくいきました。

しかし、現在boot2docker廃止されており、現在使用しなければならない VM でこれを行う方法が見つかりませんでした (virtualbox を使用しています)。

私がよく理解していれば、boot2docker と同じように動作するはずです:

                       1                                                  2
[directory from OSX] <===> [VM directory (the VM replaces Boot2docker)] <===> [container directory]

今でも機能しないのはポイント[1]だけであることをまだよく理解している場合、これは boot2docker と共有したばかりの小さなスクリプトの中間部分によって処理されました。

しかし、どうすれば今できるでしょうか?

4

2 に答える 2

3

この回答を参照してください: https://stackoverflow.com/a/32030385/2434234

要約 すると、docker 1.8 以降では、vbox cli を介してディレクトリを追加できます。

VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount
于 2016-02-17T00:39:01.353 に答える
2

私は docker の初心者で、この素晴らしいツールについてもっと知りたいと思っています。私は働いている会社で生産を行っていますが、Web システムを開発している間に生産性を上げようとしています。このようにして、OSX ローカル フォルダーに保存されている Web アプリ ファイルを、NGINX で実行されているコンテナーと共有して、時間の無駄なく同時に簡単にテストできるようにしたいと考えています。次に、インターネットで解決策を見つけました。以下で詳しく説明します。

まず、Virtual Box Appを開き、docker 仮想マシンをクリックして、オプションSettingsを選択します。

設定

次に、 [共有フォルダ] タブに移動し、[マシン フォルダ] セクションの下の[ユーザー] 項目を選択するか、まだ存在しない場合は新しい共有を追加できます。フォルダー パス (OSX ローカル フォルダーのパス) に /Users を書き込み、フォルダー名に Users を書き込み、[自動マウント] オプションと[永続化する]オプションの両方がオンになっているかどうかを確認します。

共有設定

ボックスを確認し、Virtual Box アプリ ウィンドウを閉じます。

Docker 仮想マシンを再起動することが重要です。

以下のコマンドを使用して再起動できます。

docker-machine restart

最後に、次のコマンドでコンテナを起動するだけです。

docker run -it -v Local-OSX-Path:Container-Path container-name /bin/bash

例:

docker run -it -v /Users/username/Documents/Workspaces/www:/var/www/html -p 8080:80 debian-nginx:1.0 /bin/bash

コンテナーにアクセスすると、ローカルの OSX ディレクトリにあるファイルを簡単に確認できます。

別の質問で別の解決策を見つけました-docker -osx-devと呼ばれるオープンソースプロジェクト-Boot2Docker + rsyncを使用して同じことを行いますが、より高速です...これもお気軽に試してください。

これらの情報があなたの問題を解決するのに十分であることを願っています.

幸運を!

于 2016-05-18T00:30:31.517 に答える