ParallelsでDocker

Parallels driver for Docker Machine をインストールして、Dockerコンテナの操作までの備忘録

インストール

dockerをHomebrewでインストール

$ brew install docker

docker-machineをHomebrewでインストール

$ brew install docker-machine

docker-machineはホストOSからDocker仮想マシンを操作しやすくするためのものです。

docker-machine-parallelsをHomebrewでインストール

$ brew install docker-machine-parallels

docker-machine-parallelsは操作する先のDocker仮想マシンParallelsとするためのものです。

docker-machineを操作する

Docker MachineをParallelsのドライバーを使用して作成

$ docker-machine create --driver=parallels [machine name]

この時点でParallelsのコントロールセンターに[machine name]の仮想マシンが作成されています。 f:id:AXON_K:20181012080204p:plain

docker-machineを起動

$ docker-machine start [machine name]

Parallelsコントロールセンターの[machine name]の仮想マシンが起動します。 f:id:AXON_K:20181012080157p:plain

docker-machineを停止

$ docker-machine stop [machine name]

Parallelsコントロールセンターの[machine name]の仮想マシンが停止します。

仮想マシン上のdocker-machineをホストOSから操作する

上記の手順で仮想マシンを起動します。 続いて下記のコマンドで環境変数を設定します。

$ docker-machine env [machine name]

最後に「eval $(docker-machine env [machine name])」と表示されます。このコマンドを実行するとホストOSのターミナルから仮想マシン上のコマンドとして実行することができるようになります。 このコマンド以降の「docker [...]」のコマンドは仮想マシン上で実行しているのと同じことになります。

コンテナの操作

コンテナとイメージを簡単に説明すると、イメージは起動するOSの基本的なイメージです。コンテナはイメージを展開して実際に運用している状態のものです。

コンテナの表示

コンテナの表示(-aオプションは停止しているものも表示します。)

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

何も作成していないので表示されません。

イメージの表示

イメージの表示

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

まだ何も取得していので表示されません。

イメージの取得

まず試しにUbuntunのイメージを取得してみます。

$ docker pull ubuntu:latest

今度はUbuntuのイメージが表示されます。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              cd6d8154f1e1        4 weeks ago         84.1MB

この時点でUbuntuのイメージが用意できました。まだコンテナはありません。
ではUbuntuイメージでコンテナを作成します。(-itオプションはホスト側とコンテナの入出力を繋ぐためものです。)

コンテナを作成

ubuntuイメージをもとにコンテナを作成します。

$ docker run -it ubuntu
root@0123456789ab:/#

これはコンテナID 0123456789ab にアタッチしているという状態です。(コマンド入力でコンテナIDを指定する場合は先頭の数文字だけで問題ありません)試しに ls コマンドを実行するとUbuntuイメージをもとに起動したコンテナ上のファイルとフォルダが列挙されます。

root@0123456789ab:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

コンテナの状態とアタッチ・デタッチ

コンテナの状態を理解するためにコマンドオプションを使わずに順次実行しています。

コンテナの状態

コンテナの状態は、起動中(Up)・停止(Exited)があります。

コンテナの起動

$ docker start 0123456789ab

起動していることが確認できます。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
0123456789ab        ubuntu              "/bin/bash"         21 minutes ago      Up 4 minutes                            kind_euler

コンテナの停止

$ docker stop 0123456789ab

停止コンテナも表示するために-aオプションとつけて確認すると停止しています。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
0123456789ab        ubuntu              "/bin/bash"         11 minutes ago      Exited (0) 10 seconds ago                       kind_euler

コンテナへアタッチ

起動中のコンテナへアタッチすることでコンテナで操作が可能になります。

$ docker attach 0123456789ab
root@0123456789ab:/#

コンテナからデタッチ

CTRL+P,Qを入力するとデタッチします。

root@0123456789ab:/# read escape sequence

コンテナの起動とアタッチ

コンテナを起動してアタッチします。

$ docker start -ia 0123456789ab

コンテナの停止とデタッチ

コンテナを停止してデタッチします。

root@0123456789ab:/# exit
exit