web-dev-qa-db-ja.com

OpenVZ VPSにDockerをインストールする

OpenVZ VPSを使用しています。オペレーティングシステムはCentOS 6ですが、Dockerをインストールしようとしましたが、Dockerの起動エラーが発生しました。

Starting cgconfig service: Error: cannot mount cpuset to /cgroup/cpuset: Invalid argument
/sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mounting failed
Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d      [FAILED]
Starting docker:                                           [  OK  ]
12
baoyz

2016年12月に更新。@ Alien Life Formの回答を複製せず、詳細を追加しようとしました。

短い答え

ほとんどの場合、OpenVZホスティングでは、Dockerと互換性のない古いカーネルのOpenVZ 6を使用します。

Dockerは、OpenVZ 7(3.xカーネルに基づく、 https://openvz.org/Docker_inside_CT_vz7 を参照)またはカーネルバージョン042stab105.4以降のOpenVZ 6でのみサポートされます(-を参照) https://openvz.org/Docker_inside_CT )。

長い答え

Dockerが動作するためには、制御グループと名前空間の2つのLinuxカーネル機能が必要です。したがって、これらの機能を備えたカーネルが必要です。

OpenVZでは、カーネルを制御するのではなく、ホスティング会社だけが制御します。ほとんどのホスティング会社はカーネルを協調させたり更新したりしないため、カーネルに互換性がなくなった場合、通常は運が悪かります。

OpenVZ 7は、そのままでDockerをサポートする3.10カーネルに基づいていますが、OpenVZ 7ホスティングはまだ見ていません-KVMは、新しい低市場に参入するコストプロバイダー。

OpenVZ 6は古いプロバイダーでより一般的であり、一般にDockerと互換性のない2.6カーネルに基づいています。ただし、OpenVZカーネルは通常の2.6カーネルではありませんが、3.xカーネルからバックポートされた機能はほとんどありません。したがって、実際にはカーネル042stab105.4以降は、公式のOpenVZ wikiに従ってDockerが必要とする機能をサポートしています(@Alien Life Formの回答を参照)。

以下のテキストはOpenVZバージョン6にのみ適用されます。

uname -aがカーネル042stab105.4以降を示している場合-Dockerを使用して、必要な特別なファイルシステムをマウントするための微調整を行うことができます。

それが古く、会社が協力する意思がある場合、OpenVZと互換性がないため、メインラインカーネルをインストールできません。 https://openvz.org/Download/kernel からOpenVZパッチを適用した特別なカーネルをインストールする必要があります。できれば最新の安定バージョン(執筆時点では042stab120.11)ですが、少なくとも042stab105.4です。比較すると、私が見たすべてのOpenVZホストには2.6.32-042stab075.2のようなものがあり、これはDockerと互換性がないだけでなく、脆弱です。したがって、脆弱性引数を使用して、サポートをアップグレードに強制することができます:)

別の明白だが常に適用できるわけではないソリューションは、OpenVZから、XenやKVMなどの別の仮想化テクノロジーを使用したホスティングに移行することです。ただし、メインラインのCentOS 6カーネルに必要な機能がない場合があるため、CentOS 6はDockerと互換性がない可能性があります。したがって、CentOS 7への移行も検討できます。

27
nponeccop

古いスレッド-ただし、解決策は、CentOS6をこのリンクのdebian wheezyのように扱うことで見つけることができます。 https://openvz.org/Docker_inside_CT

基本的に、/ etc/init.d/dockerで次のようにします。

prestart() {
# ALF   service cgconfig status > /dev/null
# ALF
# ALF    if [[ $? != 0 ]]; then
# ALF        service cgconfig start
# ALF    fi
mount -t tmpfs tmpfs /sys/fs/cgroup
mkdir /sys/fs/cgroup/freezer,devices
mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices
mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset
mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset

}
1
Alien Life Form