Dockerホストマシンのストレージを移動

Cドライブが限界だ!

どうも、Cドライブが圧迫され過ぎて、現実逃避ぎみの今日この頃ですが、求めていた方法が!

⇩  下記サイトに

docker-machine を使って WindowsVirtualBox 上に Docker のホストマシンを作成した場合、デフォルトで
C:\Users\<ユーザー名>\.docker\machine\machines\<マシン名> 以下に仮想ディスクファイル (.vmdk) が作られます。

別ドライブに移動させてみました。

Windows + VirtualBox で構築した Docker ホストマシンのストレージを移動する - takaya030の備忘録

 

さっそく、ためしてガッテン

 

仮想マシンの停止

 

docker-machine ls
NAME               ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default            -        virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce
kusanagi-machine   -        virtualbox   Stopped                                       Unknown

止まってないや~ん!止めます。

docker-machine stop default

 

disk.vmdk の移動

今回は E ドライブに移動させます。

Msys2のbashを使ってるので、コマンドが若干異なってますが、

mkdir -p /E/docker/machine/machines/default
cp /C/Users/Toshinobu/.docker/machine/machines/default/disk.vmdk /E/docker/machine/machines/default

 

.vbox ファイルの編集

C:¥Users¥Toshinobu¥.docker¥machine¥machines¥default¥default¥default.vbox に設定されている disk.vmdk ファイルのパスを変更します。

f:id:ts0818:20170723180952j:plain

このファイルを、テキストエディターのAtomなどで開いて編集します。

f:id:ts0818:20170723180955j:plain

編集する場所は、 

      <HardDisks>
        <HardDisk uuid="{d2089e37-10f1-4fbf-8209-220f35d94b94}" location="C:/Users/Toshinobu/.docker/machine/machines/default/disk.vmdk" format="VMDK" type="Normal"/>
      </HardDisks>

となっている部分を

      <HardDisks>
        <HardDisk uuid="{d2089e37-10f1-4fbf-8209-220f35d94b94}" location="E:/docker/machine/machines/default/disk.vmdk" format="VMDK" type="Normal"/>
      </HardDisks>

とします。

C:¥Users¥Toshinobu¥.docker¥machine¥machines¥default¥disk.vmdk は削除します。

f:id:ts0818:20170723181850j:plain

 

仮想マシンの起動

 

docker-machine start default
Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

『 docker-machine env 仮想マシン名 』

docker-machine env default
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating 
certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout                           
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.                            
Be advised that this will trigger a Docker daemon restart which might stop running containers.                

『 docker-machine regenerate-certs 仮想マシン名 』

docker-machine regenerate-certs default
Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...

『 docker-machine active 』

docker-machine active
No active host found

『 eval $(docker-machine env default) 』

eval $(docker-machine env default)

『 docker-machine active 』

docker-machine active
default

『 docker-machine ls 』

docker-machine ls
NAME               ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default            *        virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce
kusanagi-machine   -        virtualbox   Stopped                                       Unknown

Yes We can!

前回、作ったコンテナ(CentOS7.3)を起動して、Apachehttpd)が機能するか確認。

docker ps -a
CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS                           PORTS               NAMES
76faef5f92c8        my_repository:httpd_test   "sbin/init"         3 hours ago         Exited (130) About an hour ago                       httpd
2a5a62b662b4        centos                     "/bin/bash"         6 hours ago         Exited (0) 6 hours ago                               centos7

コンテナ(CentOS7.3)を起動

docker start httpd    

ブラウザでコンテナ(CentOS7.3)のApachehttpd)にアクセス。

f:id:ts0818:20170723163209j:plain

アクセスできました! 確認できたので、コンテナと仮想マシンを停止します。

docker stop httpd
docker-machine stop default

 

f:id:ts0818:20170723183845j:plain

Cドライブが青さを取り戻しました!『地球は青かった、もとい、Cドライブは青かった』ですね。