Help us understand the problem. What is going on with this article?

Podman(Docker互換のコンテナエンジン)で作成したDockerFileをDockerHubのDockerイメージとして保存する

概要

本書ではDocker互換のコンテナエンジンであるPodmanを使用し、DockerFileを作成します。その後、Github経由でPodmanからDockerHubにDockerイメージとして保存します。

前提条件

  • DockerHub,GitHubのアカウントを作成していること。
  • CentOS8をインストールしていること。
  • 本書ではWindows 10 Pro (Hyper-V)を使用します。
  • 本書では podman-docker パッケージをインストールします。
  • Podmanのインストールについてはこちらをご覧ください。リンク先

0.主な流れ

  1. PodmanでDockerFileを作成する。
  2. PodmanでDockerFileを検証する。
  3. GitHubにDockerFileを上げる。
  4. DockerHubにてGitHub上のDocerFileからDockerイメージを作成する。

1. GitHubの設定

0章の3,4のように、3章で作成するDockerFileをGitHubに上げる必要があります。その為、GitHub上でリポジトリ(repository)を作成してください。

2. DockerHubの設定

  1. ブラウザからDockerHubに移動し、ログインする。
    dockerhub_001.JPG

  2. 上部メニューから「Repositories」をクリックする。
    dockerhub_002.JPG

  3. 「Create Repository」をクリックする。
    dockerhub_003.JPG

  4. 下記の内容を入力し、「Create」をクリックする。

    • リポジトリ名
    • 説明
    • Visibillity : PublicかPrivateのどちらかを選択
    • Build Setting : GitHubを「Connected」にする。(GitHubの認証画面が表示されます) dockerhub_004.JPG
  5. リポジトリが作成されたことを確認する。
    dockerhub_005.JPG

  6. 上部メニューの「Builds」をクリックする。
    dockerhub_007 - コピー.JPG

  7. 「Link to GitHub」をクリックする。
    dockerhub_007.JPG

  8. 下記の内容をクリックし、「Save」をクリックする。

    • SOURCE REPOSITORY : リポジトリ名
    • AUTOTEST : Internal and External Pull Requests
    • Autobulid : ON
    • Build Caching : ON dockerhub_008.JPG
  9. 「Build Activity」の画面が表示されたことを確認する。
    dockerhub_009.JPG

3. DockerFileの作成

  1. 5章でGitHubに上げるために、リポジトリ専用のディレクトリを作成する。

    $ mkdir [ディレクトリ名]
    $ cd [ディレクトリ名]
    
  2. DockerFileをエディターにて作成する。例として本書ではviで作成する。

    $ vi DockerFile
    
  3. エディターにてDockerFileを作成する。例として本書では下記のようにDockerFileを作成した。

    FROM centos:8
    LABEL maintainer="yuichi1992"
    RUN dnf -y install mariadb mariadb-server
    RUN dnf -y install httpd
    RUN echo "test-page" > /var/www/html/index.html
    RUN systemctl enable mariadb
    RUN systemctl enable httpd
    
  4. 作成したDockerFileを保存する。(viではコマンドモードで:wq)

4. DockerFileの検証

  1. DockerFileをDockerImageに変換する。

    $ docker build ./ -t [名前]
    
  2. エラーが発生せずにコマンドが実行できたことを確認する。

  3. DockerFileから生成したDockerImageを確認・使用する。

    $ docker images
    $ docker run -t -i [イメージID] /bin/bash
    
    コンテナ内にてmariadb,httpdがインストールされているか確認
    $ rpm -qa | grep maria
    $ rpm -qa | grep httpd
    $ cat /var/www/html/index.html
    

5. GitHubにDockerFileを上げる

  1. 下記のコマンドを実行し、DockerFileをGitHubに上げる。

    $ git init
    $ git add .
    $ git commit -m "First Commit"
    $ git remote origin [リモートリポジトリ名]
    $ git push -f origin master
    
  2. GitHubに移動し、DockerFileが上がっていることを確認する。
    dockerhub_010.JPG

6. DockerHubの確認

  1. ブラウザにてDockerHubに移動し、リポジトリのメニューから「Builds」をクリックする。
    dockerhub_007 - コピー.JPG

  2. 「Automated Builds」にてGitHubのDockerFileが認識されていることを確認する。その後、「Trigger」をクリックする。
    dockerhub_011.JPG

  3. 「PENDING」と表示されるので待機する。
    dockerhub_013.JPG

  4. 「SUCCESS」と表示されたことを確認する。
    dockerhub_015.JPG

  5. 上部メニューの「Tags」をクリックする。
    dockerhub_018 - コピー.JPG

  6. Dockerイメージが生成されたことを確認する。
    dockerhub_018.JPG

最後に

Podmanを使用しDockerHubにDockerFileを上げることで、DockerHubにDockerイメージが保存されます。これによって他端末にDockerをインストールすることで、DockerHubで保存したDockerイメージを使用することができます。保存したDockerイメージは同一の環境なので、検証用の使い捨て環境などとして利用することができます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした