LoginSignup
4
4

More than 5 years have passed since last update.

Docker v1.13.0 on Barge

Last updated at Posted at 2016-11-12

Docker v1.13.0 が公開されたので、Barge で利用する方法をご紹介。

Barge の起動

VirtualBox と Vagrant を使って簡単にお試しする方法です。

$ vagrant box add ailispaw/barge
$ vagrant init -m ailispaw/barge
$ vagrant up

Docker のバージョンの切り替え

Barge VM にログインして、sudo /etc/init.d/docker restart v1.13.0 と打つだけで切り替わります。

$ vagrant ssh
Welcome to Barge 2.3.4, Docker version 1.10.3, build 20f81dd
[bargee@barge ~]$ sudo /etc/init.d/docker restart v1.13.0
docker[426]: Loading /etc/default/docker
WARNING: Possible Forward-Incompatibility of libnetwork
Once you upgrade Docker to v1.12 or newer, if you downgrade back,
you may need to initialize /var/lib/docker/network/files/local-kv.db.
Downloading v1.13.0 ...
docker[426]: Stopping Docker daemon
docker[426]: Setting ulimit 1048576
docker[426]: DOCKER_RAMDISK=
docker[426]: Docker version 1.13.0, build 49bf474
docker[426]: Starting Docker daemon -D -s overlay -g "/var/lib/docker" -H unix:// -H tcp://0.0.0.0:2375 --userland-proxy=false
[bargee@barge ~]$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.0
Storage Driver: overlay
 Backing Filesystem: extfs
 Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.4.42-barge
Operating System: Barge 2.3.4
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 999.2 MiB
Name: barge-test
ID: X6XR:UCA3:B6TZ:JZYJ:Y7PM:YWSP:6Z3I:ERDV:QA22:JEO3:HRBG:5G7B
Docker Root Dir: /mnt/data/var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 14
 Goroutines: 22
 System Time: 2017-01-19T04:55:35.7986026Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

experimental 機能のアクティベイト

v1.13.0 から experimental のバイナリが統合されて Docker デーモンのパラメタで切り替えられるようになりました。

[bargee@barge ~]$ cat /etc/default/docker
# DOCKER_STORAGE="overlay"

# DOCKER_DIR="/var/lib/docker"

# DOCKER_HOST="-H unix://"
DOCKER_HOST="-H unix:// -H tcp://0.0.0.0:2375"

# DOCKER_EXTRA_ARGS="--userland-proxy=false"

# DOCKER_ULIMITS=1048576

# DOCKER_LOGFILE="/var/log/docker/docker.log"

# DOCKER_TIMEOUT=5

この DOCKER_EXTRA_ARGS--experimental を加えてリスタートさせます。
(ちなみに、コメント行はデフォルト値を表しています。)

[bargee@barge ~]$ sudo vi /etc/default/docker
# DOCKER_STORAGE="overlay"

# DOCKER_DIR="/var/lib/docker"

# DOCKER_HOST="-H unix://"
DOCKER_HOST="-H unix:// -H tcp://0.0.0.0:2375"

# DOCKER_EXTRA_ARGS="--userland-proxy=false"
DOCKER_EXTRA_ARGS="--userland-proxy=false --experimental"

# DOCKER_ULIMITS=1048576

# DOCKER_LOGFILE="/var/log/docker/docker.log"

# DOCKER_TIMEOUT=5
[bargee@barge ~]$ sudo /etc/init.d/docker restart
docker[623]: Loading /etc/default/docker
docker[623]: Stopping Docker daemon
docker[623]: Setting ulimit 1048576
docker[623]: DOCKER_RAMDISK=
docker[623]: Docker version 1.13.0, build 49bf474
docker[623]: Starting Docker daemon -D -s overlay -g "/var/lib/docker" -H unix:// -H tcp://0.0.0.0:2375 --userland-proxy=false --experimental
[bargee@barge ~]$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.0
Storage Driver: overlay
 Backing Filesystem: extfs
 Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.4.42-barge
Operating System: Barge 2.3.4
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 999.2 MiB
Name: barge-test
ID: X6XR:UCA3:B6TZ:JZYJ:Y7PM:YWSP:6Z3I:ERDV:QA22:JEO3:HRBG:5G7B
Docker Root Dir: /mnt/data/var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 14
 Goroutines: 22
 System Time: 2017-01-19T04:57:31.104280608Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Experimental: true になりました。

以上になります。

追記:Checkpoint & Restore

折角なので、experimental 機能の Checkpoint & Restore を使ってみましょう。
https://github.com/docker/docker/blob/master/experimental/checkpoint-restore.md

下準備

実行には CRIU が必要なので、criu パッケージをインストールします。

[bargee@barge ~]$ sudo pkg install criu

これで、docker checkpoint コマンドが使えるはずですが、checkpoint 作成時に binfmt_misc のマウントを要求するエラーがありました。
Docker v1.13.0-rc6 ではエラーが無くなっていました。以下は必要無くなりました。

[bargee@barge ~]$ sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

コンテナの起動

公式ドキュメントにならって単純なコンテナを起動させます。

[bargee@barge ~]$ docker run --name cr -d --init busybox /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done'
[bargee@barge ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
104a30437d06        busybox             "/bin/sh -c 'i=0; ..."   4 seconds ago       Up 3 seconds                            cr

checkpoiint

[bargee@barge ~]$ docker checkpoint create cr test
[bargee@barge ~]$ docker logs cr
0
1
2
3
4
5
6
7
8
9
10
[bargee@barge ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
104a30437d06        busybox             "/bin/sh -c 'i=0; ..."   2 minutes ago       Exited (137) About a minute ago                       cr

上手く行ったような行ってないような。。。
カウンタは 10 で止まりました。

[bargee@barge ~]$ docker checkpoint ls cr
CHECKPOINT NAME
test

docker checkpoint コマンドは、コンテナ毎に NAME(ID) で管理するようです。

restore

[bargee@barge ~]$ docker start --checkpoint test cr
[bargee@barge ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
104a30437d06        busybox             "/bin/sh -c 'i=0; ..."   4 minutes ago       Up 3 seconds                            cr
[bargee@barge ~]$ docker logs cr
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

おお〜生き返ったw
ちゃんと 11 から再開しています。

ちなみに、--checkpoint なしの docker start だと、

[bargee@barge ~]$ docker start cr
cr
[bargee@barge ~]$ docker logs cr
0
1
2
3
4
5
6
7
8
9
10
0
1
2
3
4
5

0 からの再起動になりました。

4
4
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
4
4