WindowsでDocker Hubからイメージをダウンロードしたりアップロードしたりしてみる


概要

Windows10にDocker環境を構築したのでいろいろ試してみた
今回はDocker コンテナの元となるイメージのダウンロード、アップロードなどDockerをインストールして最初にやることのコマンド一覧とまとめ

DockerとDockerイメージの関連は以下を参照

 Dockerの基本機能と全体像のイメージを整理してみる

動作環境とDocker環境構築方法は以下を参照

  • Windows 10 Pro 64bit
  • Docker for Windows

 WindowsでDocker環境を試してみる

できるようになること

  • 自分のローカルマシンにDocker Hubから欲しいイメージをダウンロード
  • 自分のイメージをDocker Hubにアップロード

およその作業時間

30分

事前準備

Docker HubにイメージをアップロードするためにDocker Hubのアカウントが必要
(自分のローカルマシンにイメージをダウンロードするだけなら不要)
アカウントは以下のページで作成可能

 Docker Hub

任意のID、メールアドレス、パスワードを登録するだけでアカウント作成できる

参考書籍

プログラマのためのDocker教科書 第3章

わかりやすくてDockerの入門書的な良本です^^
みんな購入していて売れ行き好調なのか第2版が発売されていたのでリンク更新

【Kindle版】プログラマのためのDocker教科書

使用コマンド一覧

docker pull イメージ名:タグ名
docker images
docker inspect イメージ名
docker tag 元のイメージ名:タグ名 ユーザ名/イメージ名:タグ名
docker search イメージ名
docker rmi イメージ名
docker login
docker push ユーザ名/イメージ名:タグ名
docker logout

docker pull イメージ名:タグ名

Docker Hubからイメージをダウンロードするコマンド
タグ名は任意項目
イメージ名:タグ名 でタグ名にバージョンが指定できるが指定しないと最新をダウンロードする
pullだけであればDocker Hubのアカウントは不要(もちろんログインも不要)

> docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
50aff78429b1: Pull complete
f6d82e297bce: Pull complete
275abb2c8a6f: Pull complete
9f15a39356d6: Pull complete
fc0342a94c89: Pull complete
Digest: sha256:ec0e4e8bf2c1178e025099eed57c566959bb408c6b478c284c1683bc4298b683
Status: Downloaded newer image for ubuntu:latest

docker images

ローカルマシンにダウンロードしているイメージの一覧を表示するコマンド

> docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              00fd29ccc6f1        2 weeks ago         111MB

主要項目の説明は以下の通り
* REPOSITORY イメージ名
* TAG タグ名(通常はバージョン)
* IMAGE ID イメージID
* CREATED 作成日

docker inspect イメージ名

イメージの詳細を確認するコマンド
詳細情報がJSON形式で返却される

> docker inspect ubuntu
[
    {
~~~省略~~~
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 110512187,
        "VirtualSize": 110512187,
~~~省略~~~

docker tag 元のイメージ名:タグ名 ユーザ名/イメージ名:タグ名

ダウンロードしたイメージにわかりやすいタグを付けるコマンド
慣習的に付けるユーザ名はDocker HubのID、タグ名はバージョンが良い

> docker tag ubuntu user/server01:0.1

> docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
ubuntu                      latest              00fd29ccc6f1        2 weeks ago         111MB
user/server01               0.1                 00fd29ccc6f1        2 weeks ago         111MB

docker imagesコマンドで確認
タグを付けただけでイメージの実体は同じため同じイメージIDとなる

docker search イメージ名

Docker Hubに公開されているイメージを検索するコマンド

> docker search ubuntu
NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating s...   7032                [OK]
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            153                                     [OK]

主要項目の説明は以下の通り
* NAME イメージ名
* STARS お気に入り数
* OFFICIAL 公式イメージだと[OK]となる
* AUTOMATED Dockerfileをもとに自動生成されたイメージだと[OK]となる

Dockerfileについては別の機会に投稿予定、、、

注意

docker search などDocker Hubに接続するコマンド(docker pull/docker login/docker searchなど)で以下のエラーが出た場合はDockerのNetworkのDNS設定をFixedに変更してみる

Error response from daemon: Get https://index.docker.io/v1/search?q=ubutu&n=25: dial tcp: lookup index.docker.io on 192.168.1.1:XX: read udp 192.168.2.2:XXXXX->192.168.11.1:XX: i/o timeout

Settingsの開き方は以下を参照
 WindowsでDocker環境を試してみる

docker rmi イメージ名

ダウンロードしたイメージを削除するコマンド

> docker rmi user/server01:0.1
Untagged: user/server01:0.1

docker login

Docker HubにID/パスワードでログインするコマンド

> docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: IDxxx
Password:
Login Succeeded

docker push ユーザ名/イメージ名:タグ名

Docker Hubに指定したイメージをアップロードするコマンド

> docker push user/server01:0.1
The push refers to a repository [docker.io/user/server01]
f17fc24fb8d0: Layer already exists
6458f770d435: Layer already exists
5a876f8f1a3d: Layer already exists
d2f8c05d353b: Layer already exists
48e0baf45d4d: Layer already exists
0.1: digest: sha256:f871d0805ee3ce1c52b0608108dbdf1b447a34d22d5c7278a3a9dd78fc12c663 size: 1357

注意

Docker Hubにpullする場合は、イメージのユーザ名とDocker HubのIDが一致しないと以下のエラーが発生する

> docker push user/server01:0.1
The push refers to a repository [docker.io/user/server01]
f17fc24fb8d0: Preparing
6458f770d435: Preparing
5a876f8f1a3d: Preparing
d2f8c05d353b: Preparing
48e0baf45d4d: Preparing
denied: requested access to the resource is denied

user部分をdocker tagコマンドでDocker HubのIDに変更して再度pushすればOK

docker logout

Docker Hubからログアウトするコマンド

> docker logout
Removing login credentials for https://index.docker.io/v1/