5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker ToolboxをVMware Workstationで使う

Last updated at Posted at 2018-10-23

Docker for Windowsに対応していないWindows8.1でDockerを利用するには、Docker Toolboxで環境を構築する。
Docker Toolboxには以下が含まれている。

  • Docker CLI client for running Docker Engine to create images and containers
  • Docker Machine so you can run Docker Engine commands from Windows terminals
  • Docker Compose for running the docker-compose command
  • Kitematic, the Docker GUI
  • the Docker QuickStart shell preconfigured for a Docker command-line environment
  • Oracle VM VirtualBox

上記引用元:(https://docs.docker.com/toolbox/toolbox_install_windows/#what-you-get-and-how-it-works)

筆者の環境では、既にVMware Workstation12がインストールされているので、VirtualBoxの代わりにVMware Workstationを使う。VMware Workstationを使うには、下記ドライバが必要となる。
https://github.com/pecigonzalo/docker-machine-vmwareworkstation

以下では、上記を参考にVMware Workstationを使うための手順を示す。

筆者環境

  • Windows8.1
  • VMware Workstation 12
  • Docker Toolbox
  • docker-machine-vmwareworkstation v1.1.0

手順概要

  1. Docker Toolboxのインストール
  2. docker-machine-vmwareworkstationのインストール
  3. docker machine の作成

Docker Toolboxのインストール

Docker Toolboxのダウンロード

以下の公式サイトからDocker Toolbox for Windowsをダウンロードする。

Dockerを実行するにあたり、OSごとに必要となる設定が変わってくるので、同ページ内の「Step1: Check your version」を参考に設定を行う。

ダウンロードしたディレクトリをcmdの管理者権限で開き、下記コマンドを実行し、インストールを進める。

> DockerToolbox.exe /COMPONENTS="Docker,DockerMachine,DockerCompose"

start.shファイルの書き換え

下記リンク内のInstalling with Docker Toolbox > Replace contents of C:\Program Files\Docker Toolbox\start.sh with this script.に掲載されているスクリプトでC:\Program Files\Docker Toolbox\start.shを書き換える。
https://github.com/pecigonzalo/docker-machine-vmwareworkstation

上記から引用したものが以下のスクリプト

start.sh

#!/bin/bash

export PATH="$PATH:/mnt/c/Program Files (x86)/VMware/VMware Workstation"
trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key to continue..."' EXIT

VM=${DOCKER_MACHINE_NAME-default}
DOCKER_MACHINE=./docker-machine.exe

BLUE='\033[1;34m'
GREEN='\033[0;32m'
NC='\033[0m'

if [ ! -f "${DOCKER_MACHINE}" ]; then
echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
exit 1
fi

vmrun.exe list | grep ""${VM}"" &> /dev/null
VM_EXISTS_CODE=$?

set -e

STEP="Checking if machine $VM exists"
if [ $VM_EXISTS_CODE -eq 1 ]; then
"${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
rm -rf ~/.docker/machine/machines/"${VM}"
#set proxy variables if they exists
if [ -n ${HTTP_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
fi
if [ -n ${HTTPS_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
fi
if [ -n ${NO_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
fi
"${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
fi

STEP="Checking status on $VM"
VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
if [ "${VM_STATUS}" != "Running" ]; then
"${DOCKER_MACHINE}" start "${VM}"
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
fi

STEP="Setting env"
eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"

STEP="Finalize"
clear
cat << EOF

                    ##         .
              ## ## ##        ==
           ## ## ## ## ##    ===
       /"""""""""""""""""\___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
       \______ o           __/
         \    \         __/
          \____\_______/

EOF
echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
echo "For help getting started, check out the docs at https://docs.docker.com"
echo
cd

docker () {
MSYS_NO_PATHCONV=1 docker.exe "$@"
}
export -f docker

if [ $# -eq 0 ]; then
echo "Start interactive shell"
exec "$BASH" --login -i
else
echo "Start shell with command"
exec "$BASH" -c "$*"
fi


# docker-machine-vmwareworkstationのインストール

下記リンク内の`Latest release > docker-machine-vmwareworkstation.exe`をダウンロードし、`C:\Program Files\Docker Toolbox\`内に保存する。
https://github.com/pecigonzalo/docker-machine-vmwareworkstation/releases


# Docker利用する

## Docker Machineの作成

以下を実行すると、先ほどダウンロードした`docker-machine-vmwareworkstation`を使ってdevという名前のmachineが作成される。
※以降では、Pathを一部改変しています

C:\Users\Desktop\docker>docker-machine create --driver=vmwareworkstation dev


以下で、machineが作成されたことを確認。

```powershell
C:\Users\Desktop\docker>docker-machine ls
NAME   ACTIVE   DRIVER              STATE     URL                         SWARM   DOCKER        ERRORS
dev    *        vmwareworkstation   Running   tcp://172.16.111.128:2376           v18.06.1-ce

C:\Users\Desktop\docker>

環境変数の設定

Docker MachineでDockerを動かすために、環境変数の設定を行う。

C:\Users\Desktop\docker>docker-machine env dev
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://172.16.111.128:2376
SET DOCKER_CERT_PATH=C:\Users\.docker\machine\machines\dev
SET DOCKER_MACHINE_NAME=dev
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
REM Run this command to configure your shell:
REM     @FOR /f "tokens=*" %i IN ('docker-machine env dev') DO @%i

C:\Users\Desktop\docker>SET DOCKER_TLS_VERIFY=1

C:\Users\Desktop\docker>SET DOCKER_HOST=tcp://172.16.111.128:2376

C:\Users\Desktop\docker>SET DOCKER_CERT_PATH=C:\Users\.docker\machine\machines\dev

C:\Users\Desktop\docker>SET DOCKER_MACHINE_NAME=dev

C:\Users\Desktop\docker>SET COMPOSE_CONVERT_WINDOWS_PATHS=true

C:\Users\Desktop\docker>

動作確認

以下では、動作の確認で2つほどコンテナを実行する。
行っているのは公式の下記リンクに記載されている内容。
https://docs.docker.com/machine/get-started/#run-containers-and-experiment-with-machine-commands

hello world

以下でhello worldが表示されるか確認。

C:\Users\Desktop\docker>docker run busybox echo hello world
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
90e01955edcd: Pull complete
Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812
Status: Downloaded newer image for busybox:latest
hello world

C:\Users\Desktop\docker>

nginx

nginxのコンテナを実行。

C:\Users\Desktop\docker>docker run -d -p 8000:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
f17d81b4b692: Already exists
d5c237920c39: Pull complete
a381f92f36de: Pull complete
Digest: sha256:b73f527d86e3461fd652f62cf47e7b375196063bbbd503e853af5be16597cb2e
Status: Downloaded newer image for nginx:latest
0462eb967f8a156fdcdeae651ced151f52fef0bee6d56b877a7fc828da57c53e

machineのipを確認し、curlでレスポンスが返ってくるか確認する。
※curlがインストールされていない場合は、ブラウザで確認してください。

C:\Users\Desktop\docker>docker-machine ip dev
172.16.111.128

C:\Users\Desktop\docker>curl 172.16.111.128:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

C:\Users\Desktop\docker>

#おわりに

Docker ToolboxでインストールされるVirtualBoxの代わりにVMware Workstationを利用してDockerを利用した。
タイトルは厳密には正しくないと思うが、あんまり時間をかけても意味がないので、無視。
良いタイトルがあればコメント等で

参考

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?