2015年12月3日木曜日

CoreOSでDockerプライベートリポジトリを構築する

DockerRegistryを使用してローカル環境にコンテナイメージを格納するプライベートリポジトリサーバを作成します。
プライベートリポジトリを構築することでetcd2 + fleetのクラスタ環境をローカル内で完結することができます。

【参考URL】
https://coreos.com/os/docs/latest/registry-authentication.html
https://docs.docker.com/registry/deploying/

【事前準備】
docker pullは基本的にSSL通信です。
ローカルのリポジトリサーバ構築時でも同様にSSL通信を行うのですがその場合証明書作成等が必要となるため
cloud-config.ymlに下記を追記することで非SSL通信でdocker pullするようにします。
(インターネットからdocker pullする場合も非SSL通信になるのでご注意を)

```bash
write_files:
  - path: /etc/systemd/system/docker.service.d/50-insecure-registry.conf
    content: |
        [Service]
        Environment='DOCKER_OPTS=--insecure-registry="192.168.159.0/24"'
```

リポジトリサーバをダウンロードします。
リポジトリデータはホストの/home/registryにマウントすることでデータを永続化します。

docker run -d -p 5000:5000 --restart=always --name registry -v /home/registry:/var/lib/registry registry:2

ローカルリポジトリに登録するコンテナをダウンロードします

docker pull centos:6

ダウンロードしたコンテナイメージをタグ付けします。

docker tag centos:6 localhost:5000/centos

タグ付けしたコンテナイメージをアップロードします。

docker push localhost:5000/centos

CoreOSホストの/home/registryを参照するとdockerレジストリイメージが格納されていることがわかります。

ls /home/registry
docker


他のCoreOSホストからローカルリポジトリのイメージをダウンロードします
192.168.159.160はローカルレジストリを起動しているCoreOSホストのIPです。

docker pull 192.168.159.160:5000/centos

他のCoreOSホストからイメージをpushすることもできます。

docker push 192.168.159.160:5000/centos


許可されていないホストからも簡単にpushできるのでポート制限等必要ですね。




0 件のコメント:

コメントを投稿