今まで Oracle Linux で Docker を使用していて、
気づき感じたことなどを挙げておこうと思います。
マニュアルでは、下記のあたりです。
Dockerユーザーズ・ガイド
http://docs.oracle.com/cd/E39368_01/e67079/index.html
ちなみに今回のコマンド実行例などは、Oracle Linux 7 の環境ですが、
Oracle Linux 6 でも同様な感じです。
[root@ol7-docker01 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.3
Docker のパッケージ。
Oracle Linux の標準的な (Public Yum サーバに含まれる)RPM に、Docker は含まれます。
ただし、デフォルトでは有効になっていない ol7_addons にあります。
Docker のバージョンは、RHEL、CentOS とだいたい同じです。
アップグレードは、RPM パッケージのアップグレードインストールとなります。
[root@ol7-docker01 ~]# yum --enablerepo=ol7_addons list docker-engine
読み込んだプラグイン:ulninfo
インストール済みパッケージ
docker-engine.x86_64 1.12.2-1.0.1.el7 @ol7_addons
利用可能なパッケージ
docker-engine.x86_64 1.12.6-1.0.1.el7 ol7_addons
最新の Docker の RPM は、UEK R4 と依存関係があります。
Oracle Linux 7 であれば Red Hat 互換カーネルでも Docker が
まったく使えないわけではないですが、RPM でインストールするには UEK R4 が必要です。
[root@ol7-docker01 ~]# yum --enablerepo=ol7_addons deplist docker-engine
読み込んだプラグイン:ulninfo
パッケージ : docker-engine.x86_64 1.12.6-1.0.1.el7
依存性 : /bin/sh
provider: bash.x86_64 4.2.46-21.0.1.el7_3
依存性 : config(docker-engine) = 1.12.6-1.0.1.el7
provider: docker-engine.x86_64 1.12.6-1.0.1.el7
依存性 : device-mapper >= 1.02.90-2
provider: device-mapper.x86_64 7:1.02.135-1.el7_3.2
依存性 : device-mapper-libs >= 1.02.90-1
provider: device-mapper-libs.x86_64 7:1.02.135-1.el7_3.2
provider: device-mapper-libs.i686 7:1.02.135-1.el7_3.2
依存性 : docker-engine-selinux >= 1.12.6-1.0.1.el7
provider: selinux-policy-targeted.noarch 3.13.1-102.0.2.el7_3.13
provider: docker-engine-selinux.noarch 1.12.6-1.0.1.el7
依存性 : iptables
provider: iptables-services.x86_64 1.4.21-17.el7
provider: iptables.x86_64 1.4.21-17.el7
provider: iptables.i686 1.4.21-17.el7
依存性 : kernel-uek >= 4.1
provider: kernel-uek-debug.x86_64 4.1.12-61.1.25.el7uek
provider: kernel-uek.x86_64 4.1.12-61.1.25.el7uek
依存性 : libc.so.6()(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libc.so.6(GLIBC_2.14)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libc.so.6(GLIBC_2.17)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libc.so.6(GLIBC_2.2.5)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libc.so.6(GLIBC_2.4)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libc.so.6(GLIBC_2.9)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libcgroup
provider: libcgroup.x86_64 0.41-11.el7
provider: libcgroup.i686 0.41-11.el7
依存性 : libdevmapper.so.1.02()(64bit)
provider: device-mapper-libs.x86_64 7:1.02.135-1.el7_3.2
依存性 : libdevmapper.so.1.02(Base)(64bit)
provider: device-mapper-libs.x86_64 7:1.02.135-1.el7_3.2
依存性 : libdevmapper.so.1.02(DM_1_02_97)(64bit)
provider: device-mapper-libs.x86_64 7:1.02.135-1.el7_3.2
依存性 : libdl.so.2()(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libltdl.so.7()(64bit)
provider: libtool-ltdl.x86_64 2.4.2-21.el7_2
依存性 : libpthread.so.0()(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libpthread.so.0(GLIBC_2.2.5)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libpthread.so.0(GLIBC_2.3.2)(64bit)
provider: glibc.x86_64 2.17-157.el7_3.1
依存性 : libseccomp.so.2()(64bit)
provider: libseccomp.x86_64 2.3.1-2.el7
依存性 : libsystemd.so.0()(64bit)
provider: systemd-libs.x86_64 219-30.0.1.el7_3.6
依存性 : libsystemd.so.0(LIBSYSTEMD_209)(64bit)
provider: systemd-libs.x86_64 219-30.0.1.el7_3.6
依存性 : rtld(GNU_HASH)
provider: glibc.x86_64 2.17-157.el7_3.1
provider: glibc.i686 2.17-157.el7_3.1
依存性 : selinux-policy >= 3.13.1-23
provider: selinux-policy.noarch 3.13.1-102.0.2.el7_3.13
依存性 : systemd-units
provider: systemd.x86_64 219-30.0.1.el7_3.6
依存性 : tar
provider: tar.x86_64 2:1.26-31.el7
依存性 : xz
provider: xz.x86_64 5.2.2-1.el7
UEK R4 の Oracle Linux です。
[root@ol7-docker01 ~]# uname -r
4.1.12-61.1.25.el7uek.x86_64
エラータ、RPM リリース情報について。
Oracle Linux のエラータ メーリングリストを購読しておくと、
そこに docker-engine などの RPM 更新の情報も含まれています。
El-errata -- Errata Announcements for Oracle Linux
https://oss.oracle.com/mailman/listinfo/el-errata
たとえば、こんなメールが来るので、Docker の RPM の更新もわかります。
https://oss.oracle.com/pipermail/el-errata/2017-January/006647.html
コンテナ イメージを格納するストレージについて。
RHEL や CentOS と同様、デフォルトの Storage Driver は、devicemapper です。
[root@ol7-docker03 ~]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.12.2
Storage Driver: devicemapper
Pool Name: docker-251:0-136-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 11.8 MB
Data Space Total: 107.4 GB
Data Space Available: 8.434 GB
Metadata Space Used: 581.6 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.135-RHEL7 (2016-09-28)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.1.12-61.1.23.el7uek.x86_64
Operating System: Oracle Linux Server 7.3
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 670.9 MiB
Name: ol7-docker03
ID: LCA3:CRNY:ALP7:JC6K:TQVQ:PBJL:VQ3J:C4FM:3ZVA:BKQM:RDO4:TQHR
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
127.0.0.0/8
マニュアルには Btrfs に変更する方法も紹介されています。
Btrfs が出てくるあたりが、なんとなく ORACLE っぽい気もします。
ちなみに、割と新しい docker 1.12系 が提供されているので、
下記は Swarm Mode にしてみてあります。
[root@ol7-docker01 ~]# docker info
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 42
Server Version: 1.12.2
Storage Driver: btrfs
Build Version: Btrfs v3.19.1
Library Version: 101
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: overlay host null bridge
Swarm: active
NodeID: 1749y0pd4qk41d7xnlfa4yvql
Is Manager: true
ClusterID: dcmdslo8tzjf7rbcx54jxl6nx
Managers: 1
Nodes: 3
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.56.108
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.1.12-61.1.25.el7uek.x86_64
Operating System: Oracle Linux Server 7.3
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 990.9 MiB
Name: ol7-docker01
ID: 37N4:PEH6:AKA3:PEKX:6MPX:ACFY:F3NO:OE6O:TE7E:M7ZH:IFW4:FMYO
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
127.0.0.0/8
Docker Engine のサービス管理など。
Oracle Linux 6 であれば chkconfig / service コマンドあたりを使用します。
Oracle Linux 7 であれば systemd で管理されるので、
systemctl コマンドを使用します。
Unit ファイルも、RPM に含まれています。
[root@ol7-docker01 ~]# rpm -qf /usr/lib/systemd/system/docker.service
docker-engine-1.12.2-1.0.1.el7.x86_64
[root@ol7-docker01 ~]# rpm -qf /etc/systemd/system/docker.service.d/docker-sysconfig.conf
docker-engine-1.12.2-1.0.1.el7.x86_64
Docker へのオプションは、Drop In として
/etc/systemd/system/docker.service.d/docker-sysconfig.conf
あたりに指定します。
[root@ol7-docker01 ~]# systemctl cat docker
# /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
[Install]
WantedBy=multi-user.target
# /etc/systemd/system/docker.service.d/docker-sysconfig.conf
[Service]
ExecStart=
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/docker daemon \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$INSECURE_REGISTRY
以上、Oracle Linux の Docker の雰囲気でした。
過去遺産
返信削除http://gowatana.blogspot.jp/2016/01/ol7-docker19.html
過去遺産 その2
返信削除http://gowatana.blogspot.jp/2015/08/ol6-docker-btrfs.html