1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コンテナイメージをDocker Hubにプッシュする

Posted at

はじめに

コンテナイメージを別の環境でも使用したい、他の人と共有したい、と思ったときに真っ先に思いつく方法は、Docker Hubでコンテナイメージを共有することだと思います。

私がDockerのコンテナイメージをDocker Hubにプッシュしたときに行ったことを書き記しておきます。

環境

  • macOS Catalina
  • git 2.27.0
  • Docker 19.03.8

サンプルプロジェクトをGitから取得

サンプルプロジェクトはDockerの公式のものを利用させていただいております。リンクはこちらになります。

$ git clone https://github.com/dockersamples/node-bulletin-board
$ cd node-bulletin-board/bulletin-board-app

Dockerfileの作成

Dockerfileはコンテナを定義するものです。ご自分のお好きなDockerfileを作成していただいて、任意のディレクトリに置いておきます。本記事ではDocker公式のものを利用させていただいているので、Dockerfileは以下のものをとなっております。ソースはこちらです。

FROM node:current-slim
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
EXPOSE 8080
CMD [ "npm", "start" ]
COPY . .

コンテナイメージのビルド

ここでDockerfileの通りにコンテナイメージを作成します。このコマンドを打つ際には、今いるディレクトリにDockerfileがあることを確認しておきます。

$ docker build --tag bulletinboard:1.0 .

正常に終了していれば、Successfully tagged bulletinboard:1.0と出力されているかと思います。

$ docker images

とTerminal上で打ち、Repositoryに存在していることを確かめておくのもいいかもしれません。

コンテナの起動

コンテナイメージを作成したら、そのコンテナを起動します。

$ docker run --publish 8000:8080 --detach --name bb bulletinboard:1.0

コンテナが起動できたら、そのコンテナ上で動いている掲示板アプリケーションにアクセスできることを確認しておきます。ブラウザでlocalhost:8000にアクセスします( http://localhost:8000 )。

アクセスできることを確認したら、このコンテナイメージはDocker Hubにプッシュしないので削除しておきましょう。

$ docker rm --force bb

Docker Hubでプッシュする

さて、お待たせしました。やっと本題です。ちなみにDocker HubにプッシュするにはDocker Hubアカウントが必要です。もしDocker Hubアカウントがない方はこちらでDocker IDを作成しておいてください。

Docker IDが作成できたら、Terminal上でDocker Hubにログインします。

$ docker login

認証画面(CLI)が出てきたら、Docker IDとご自身で設定されたパスワードを入力してログインを完了させておきます。

ここで注意点なのですが、Docker Hubにプッシュできるコンテナイメージにも条件があります。コンテナイメージの名前を<Docker ID>/<Repository Name>:<tag>としておかないといけない、という条件です。

Docker Hubにプッシュしたことのない人からすれば寝耳に水な訳です。私はこのパターンでした。面倒な作業をもう一回やらないといけないのかと思いましたが、公式ページを見ていると後からでもできるようでした。

$ docker tag bulletinboard:1.0 <Docker ID>/bulletinboard:1.0

というコマンドを打ち、コンテナイメージの名前・タグを変更します。これでDocker Hubにプッシュできるようになりました。Docker Hubにプッシュします。

$ docker push <Docker ID>/bulletinboard:1.0

エラーが何もなかった場合、ご自身のDocker Hubのリポジトリにプッシュされているハズです。確認しておきましょう( https://hub.docker.com/ )。

おわりに

Dockerは最近注目され始めている技術で、自分の分野(データサイエンス)にもDockerが浸透し始めました。正直自分はネットワークとかサーバの分野には明るくないのですが、自分のローカルを汚さなくて良い点、別の環境でも同じ分析環境を作成できる点で非常に嬉しいです。自分はパソコンを購入して再度環境構築するのが面倒だったので、いっそのこと、とDockerを導入してみました。Gitも勉強しているので、DockerとGitは親和性が高いので今後は連携させて行きたいですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?