前提
- Docker Hubでアカウントを持っていること。※ここではユーザー名(username)として進めます。
- Dockerイメージを作成していること。※ここでは「original」というイメージを作成したとします。
環境
- macOS High Sierra 10.13.2
- Docker for Mac Version 17.12.0-ce-mac47
- Docker Version 17.12.0-ce
本題
1.最新のレジストリをDocker Hubから取得
最新のバージョンここで確認し、
$ docker pull registry:バージョン
で取ってきます。
2018/1/22現在では2.6.2が最新なので。。。
$ docker pull registry:2.6.2
2.6.2: Pulling from library/registry
という具合になればOKです。
不安であれば$ docker images
で自分が持っているイメージを確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2.6.2 d1fd7d86a825 12 days ago 33.3MB
という具合に出るかと思います。
2.取ってきたイメージを元にコンテナを作り、作ったコンテナを起動する
docker run
コマンドで実行します。
これはdocker create
とdocker start
を同時に実行するという感覚の理解で良いかと思います。
$ docker run -d -p 5000:5000 --restart always --name registry registry:2.6.2
- -dオプション:コンテナをバックグラウンドで動かす
- -pオプション:外部からアクセスされるポート番号:コンテナ側のポート番号を指定しますよ
- --restart always:Dockerを終了した後、再度起動させた際にこのコンテナを自動的に起動したいよ
- --name:コンテナ名を定義しますよ
3.イメージをあげる前にタグ名をつける
自分で作成したイメージをあげる前にはタグ名をつける必要があるそうです。
ということで
$ docker tag イメージID ユーザー名/リポジトリ名:タグ名
で実施します。
こんな感じ
$ docker tag 5fb username/orginal:1.0
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2.6.2 d1fd7d86a825 12 days ago 33.3MB
username/orginal 1.0 5fbxxxxxxxxx 5 days ago 1.07GB
orginal:1.0 latest 5fbxxxxxxxxx 5 days ago 1.07GB
4.Dockerイメージをあげる
$ docker push ユーザー名/リポジトリ名:タグ名
で手順2で用意したコンテナにあげます。
$ docker push username/original:1.0
これで一応は完了です。
5.確認(pullしてみる)
ちゃんとあげられているか確認をしてみます。
※ブラウザからも確認できます。
まず、手順3で作成したタグ名つきイメージを消します。
$ docker rmi username/orginal:1.0
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2.6.2 d1fd7d86a825 12 days ago 33.3MB
orginal:1.0 latest 5fbxxxxxxxxx 5 days ago 1.07GB
pullします。
$ docker pull username/orginal:1.0
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2.6.2 d1fd7d86a825 12 days ago 33.3MB
username/orginal 1.0 5fbxxxxxxxxx 5 days ago 1.07GB
orginal:1.0 latest 5fbxxxxxxxxx 5 days ago 1.07GB