ページ

2016年10月23日日曜日

Docker for MacでプライベートなDockerHubを作る


DockerHubは沢山のimageが公開されていて便利ですが、
自分用や会社用のDockerHubを作りたい時があるかと思います。
そんな時はDockerを使ってDockerHubを作成できるので作ってみます。

環境構築


最近はLinuxに限らず、WindowsでもMacでもDockerが動きます。
今回はDocker for Macを使ってMacに環境を構築してみます。
まずは
ここ からdmgファイルをダウンロード。
インストールが完了するとステータスバーにDockerのアイコンが表示されます
最初アイコンをクリックすると↓のようなポップアップが表示され
Dockerの使用状況を改善の為に送るかどうか設定できます。
「Got it」をクリックし準備OKです。
ちゃんと動いているかターミナルから
$ docker --version
を実行し、バージョンが表示されればOKです。

Registryコンテナの取得


公式に配布されているRegistryコンテナを取得し、
プライベートなDockerHubを構築していきます。
まずはimageをpull
$ docker pull registry:2
ちゃんとpullできたかdocker imagesで確認します。
$ docker images
REPOSITORY  TAG   IMAGE ID         CREATED        SIZE
registry    2     XXXXXXXXXXXX     4 weeks ago    33.3 MB

起動&可視化


早速起動して使ってみたいと思います・・が、
その前にDockerHubみたいにブラウザで登録状況が確認できた方が
使いやすいので、可視化するコンテナの
を使います。
毎回コマンドで起動して〜停止して〜というのもきついので 以下のスクリプトを用意します。
  • run_registry.sh
#!/usr/bin/env bash

DOCKER_HOME=$PWD

if [ -e $DOCKER_HOME/registry ]; then
  # 何もしない
else
  mkdir $DOCKER_HOME/registry
fi

docker run \
    -d \
    -p 5000:5000 \
    -v $DOCKER_HOME/registry:/var/lib/registry \
    --name docker_registry2 \
    registry:2

docker run \
    -d \
    -e ENV_DOCKER_REGISTRY_HOST=[ローカルPCのIPアドレス] \
    -e ENV_DOCKER_REGISTRY_PORT=5000 \
    -p 8080:80 \
    --name registry_browser \
    konradkleine/docker-registry-frontend:v2
-v $DOCKER_HOME/registry:/var/lib/registry \では
登録されたimageの内容はコンテナ内の/var/lib/registry
書き込まれます。永続化の為ホストの$DOCKER_HOME/registry
マウントさせています。
2番目のdocker runでは可視化の為のコンテナを走らせてます。
早速起動します。
$ ./run_registry.sh
初回はimageのダウンロードで遅いかもしれません。起動ができたら
http://localhost:8080にアクセスし以下の画面が出れば成功です。

push&pull


作成したプライベートなDockerHubにimageをpushする場合は、
まずpushしたいimageを特定の名前で作成します。
例えば、jenkins:latestのイメージから名前を帰る場合、
で作成します。
例)
$ docker tag jenkins:latest localhost:5000/slowhand/jenkins:latest
あとはpushすればOKです。
$ docker push localhost:5000/slowhand/jenkins:latest
http://localhost:8080上で登録されてると思います。

逆にpullする場合は
$ docker pull localhost:5000/slowhand/jenkins:latest
でOKです。

停止


停止用のスクリプトも書いておきます。
  • stop_registry.sh
#!/usr/bin/env bash

docker stop registry_browser
docker stop docker_registry2

docker rm registry_browser
docker rm docker_registry2
以上、色々便利になりましたw

0 件のコメント:

コメントを投稿