Docker imageをdockerhubに登録してみる

## やりたいこと
- dockerhubに、自作のdockerイメージを登録したい。
- 登録してみることが今回の目的なので、非常にシンプルなイメージにしている。

## 環境
- ローカルのDockerバージョン `19.03.12`
- macOS Catalina バージョン10.15.5

# 手順
## 準備
- dockerhubのアカウントを作成する。
- 以下のようなディレクトリを作成する

```
dockerhub_manually_push/
  ├ Dockerfile
  └ hello.txt
```

- Dockerfileには以下のように記述。

```dockerfile
FROM ubuntu

COPY hello.txt /tmp/hello.txt

CMD ["cat", "/tmp/hello.txt"]
```

- hello.txtには以下のように記述。

```text
manually push success!
```

## イメージのビルド
- 以下を`dockerhub_manually_push`にて実行。
- `hogeuser`は、dockerhubのユーザ名に変更してください。

```bash
docker build -t hogeuser/dockerhub_manually_push .
```

- 実行結果はこんなかんじ

```bash
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM ubuntu
 ---> 4e2eef94cd6b
Step 2/3 : COPY hello.txt /tmp/hello.txt
 ---> f8dffefe0e98
Step 3/3 : CMD ["cat", "/tmp/hello.txt"]
 ---> Running in cc00ea9b80e1
Removing intermediate container cc00ea9b80e1
 ---> 8f10f2bddeae
Successfully built 8f10f2bddeae
Successfully tagged hogeuser/dockerhub_manually_push:latest
```

- `docker images`または `docker image ls`コマンドで、イメージが作成されたか確認

```bash
❯ docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
hogeuser/dockerhub_manually_push            latest              8f10f2bddeae        4 seconds ago       73.9MB
```

## dockerhubにログイン
```bash
❯ docker login
Authenticating with existing credentials...
Login Succeeded
```

## dockerhubにイメージを登録
```bash
docker push hogeuser/dockerhub_manually_push:latest
```

## dockerhubを確認
- Repositoriesの画面から、イメージを確認できた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320845/dc730ee9-ffaf-1209-11fe-2172c9ba6d9d.png)

## 登録したイメージをpullして実行
- 「[Play with Docker](https://labs.play-with-docker.com/)」という、ブラウザ上のDocker実行環境を使用してみる。
    - ここには、linuxOSとDocker(version20.10.0)のみが準備されている。
- 「Start」→「ADD NEW INSTANCE」でコンソールが起動する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320845/1463c12a-9abd-5913-f2dd-ac976a76569d.png)

- 以下コマンドで、先程dockerhubに登録したイメージを持ってくる。

```bash
docker pull hogeuser/dockerhub_manually_push
```

以下実行結果。

```bash
$ docker pull hogeuser/dockerhub_manually_push
Using default tag: latest
latest: Pulling from hogeuser/dockerhub_manually_push
54ee1f796a1e: Pull complete 
f7bfea53ad12: Pull complete 
46d371e02073: Pull complete 
b66c17bbf772: Pull complete 
9d7f6024b75c: Pull complete 
Digest: sha256:da97805c1f3f1578ce661c71df17e8bdaabc905662afa71d3202d5d56287f431
Status: Downloaded newer image for hogeuser/dockerhub_manually_push:latest
docker.io/hogeuser/dockerhub_manually_push:latest
```

イメージがローカルに保存できた。

```bash
$ docker images
REPOSITORY                             TAG       IMAGE ID       CREATED          SIZE
hogeuser/dockerhub_manually_push   latest    8f10f2bddeae   10 minutes ago   73.9MB
```

- イメージからコンテナを起動し、実行する

```bash
$ docker run hogeuser/dockerhub_manually_push
manually push success!
```

テキストの内容が表示されたので、問題なく実行できたようです。


# 参考にさせていただいたサイトなど
- [docker versionコマンドの使い方](https://www.memotansu.jp/docker/690/)
- [Docker Tutorial for Beginners [2021]](https://www.youtube.com/watch?v=pTFZFxd4hOI)
- [DockerImageをDockerHubに登録する方法](https://qiita.com/kon_yu/items/7c40f4dfbd1cce006ce7)
- [入門Docker dockerfile](https://y-ohgi.com/introduction-docker/2_component/dockerfile/)