私は現在Dockerを学んでおり、素敵でシンプルなDocker Composeセットアップを作成しました。 3つのコンテナー。すべて独自のDockerfileセットアップがあります。後でクラスターをセットアップできるように、これをCoreOSで動作するように変換するにはどうすればよいですか?
web:
build: ./app
ports:
- "3030:3000"
links:
- "redis"
newrelic:
build: ./newrelic
links:
- "redis"
redis:
build: ./redis
ports:
- "6379:6379"
volumes:
- /data/redis:/data
CoreOSに最新のDocker Composeをインストールするための簡単なスクリプトを作成しました: https://Gist.github.com/marszall87/ee7c5ea6f6da9f8968dd
#!/bin/bash
mkdir -p /opt/bin
curl -L `curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.assets[].browser_download_url | select(contains("Linux") and contains("x86_64"))'` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
Sudo
で実行するだけです
CoreOSで実際に何かをインストールまたは実行する適切な方法は、
docker-compose
の場合、docker
をユニットとして持っているのと同じように、おそらくユニットとしてインストールしたいでしょう。詳細については、Digital OceanのCoreOSに関する優れたガイドと systemdユニット の章を参照してください。
クラウドプロバイダーまたはカスタムインストールに基づいてクラウド構成を見つけます。場所については https://coreos.com/os/docs/latest/cloud-config-locations.html を参照してください。
ユニットとして追加してdocker-composeをインストールします
#cloud-config
coreos:
units:
- name: install-docker-compose.service
command: start
content: |
[Unit]
Description=Install docker-compose
ConditionPathExists=!/opt/bin/docker-compose
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/mkdir -p /opt/bin/
ExecStart=/usr/bin/curl -o /opt/bin/docker-compose -sL "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-linux-x86_64"
ExecStart=/usr/bin/chmod +x /opt/bin/docker-compose
Curlステートメントでuname -s
およびuname -m
の展開を機能させることができなかったため、それらを展開した値に置き換えただけです。
構成ファイルを検証します
coreos-cloudinit -validate --from-file path-to-cloud-config
次のように出力されるはずです
myhost core # coreos-cloudinit -validate --from-file path-to-cloudconfig
2016/12/12 12:45:03 Checking availability of "local-file"
2016/12/12 12:45:03 Fetching user-data from datasource of type "local-file"
myhost core #
coreos-cloudinit
はcloud-configのコンテンツブロックを検証しないことに注意してください。終了したらCoreOSを再起動し、準備ができました。
更新:@Wolfgangのコメントとして、CoreOSを再起動する代わりにcoreos-cloudinit --from-file path-to-cloud-config
を実行できます。
dduportal のようなdockerコンテナーでdocker-composeを使用することもお勧めします。
使いやすさのために、次のようにcloud-config.ymlを拡張しました。
write_files:
- path: "/etc/profile.d/aliases.sh"
content: |
alias docker-compose="docker run -v \"\$(pwd)\":\"\$(pwd)\" -v /var/run/docker.sock:/var/run/docker.sock -e COMPOSE_PROJECT_NAME=\$(basename \"\$(pwd)\") -ti --rm --workdir=\"\$(pwd)\" dduportal/docker-compose:latest"
sudo coreos-cloudinit -from-url http-path-to/cloud-config.ymlおよびシステムの再起動を介してcloud-configを更新した後、他のすべてのマシンと同じようにdocker-composeコマンドを使用できます。
CentruyLabsは fig2coreos という名前のrubygemを作成しました
Fig.ymlを.serviceファイルに変換します
docker-composeが作成されたため、figは推奨されませんが、おそらく動作するように構文は同じようです。
ここにある、私が見つけた最良の方法:
core@london-1 ~ $ docker pull dduportal/docker-compose
core@london-1 ~ $ cd /dir/where-it-is-your/docker-compose.yml
core@london-1 ~ $ docker run -v "$(pwd)":/app \
-v /var/run/docker.sock:/var/run/docker.sock \
-e COMPOSE_PROJECT_NAME=$(basename "$(pwd)")\
-ti --rm \
dduportal/docker-compose:latest up
できた!
シンプル3ステップ:
Sudo mkdir -p /opt/bin
公式Webサイトでコマンドを取得します https://docs.docker.com/compose/install/ から出力パスを/ usr/local/bin /に変更しますdocker-composeto/ opt/bin:
Sudo curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /opt/bin/docker-compose
実行可能にする:
Sudo chmod +x /opt/bin/docker-compose
これで、docker-composeができました:)
よく、coreOSはdockerをサポートしますが、クラスタリングサポートを備えたベアボーンlinuxであるため、すべてのコンテナのベースイメージを含める必要があります(FROMを使用し、DockerfileでRUN yum -y install bzip2 gnupgなどを実行する必要がある場合があります)。あなたのアプリとredisに必要なビンとライブラリがあります(ubuntuベースイメージをもっとよく撮ってください)
ここでは、それらすべてを1つのコンテナ/ドッカーに入れるか、または別々に行う場合は別々にすることができます。コンテナとオプションでボリュームマウントをリンクする必要があります-ドッカーにはそれに関するいくつかの良いメモがあります( https://docs.docker .com/userguide/dockervolumes / )
最後に、systemdユニットを指定するクラウド設定を記述する必要があります。あなたの場合、systemdによって起動される3つのユニットがあり(systemdはcoreOSの古き良き初期化システムを置き換えます)、coreos-cloudinitにフィードします(ヒント:coreos-cloudinit -from-file =。/ cloud-config -validate = false)、永続性のためにlinux bootcmdでこのcloud-configも提供する必要があります。
現在、docker-compose
を使用する最も簡単な方法は、 CoreOS Vagrant VM です。 フォワードDockerポート を確認する必要があります。
docker-compose
の使用に特に関心がない場合は、 Kubernetes を実行してCoreOSを試すことができます。複数の オプション があり、 Azureの1つ を実装しました。