自分だけのクイズ作成 - Quipha公開中

【docker hub】Dockerfileをビルドして公開

Docker
スポンサーリンク

Dockerfileをビルドしてdocker hubに公開する

今回はDockerfileを作成、ビルドしイメージを作成します。
そのイメージをdocker hubに公開したいと思います。
これにより色んな人へdockerイメージの配布ができますね!

今回作成したイメージの使い方は、以下の記事を参考にしてください。

他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。

環境

  • Windows 11 / 10 or macOS Monterey (M1)
  • Docker

2022/04/24 作業はWindowsでもMacでも同様にできます。
Macを使用して最新バージョンで確認しました。

Dockerfileの作成

例としてPythonとスクレイピングの環境を、dockerイメージとして作成してみたいと思います。

任意のフォルダにDockerfileを作成します。
参考までに私は以下の場所に置きました。

Windows例:
D:\docker\python-scraping\Dockerfile
Mac例:
/users/xxx/Documents/python-scraping/Dockerfile

python3.6と、スクレイピングで要素を抽出するためのbeautifulsoup4をインストールします。
ついでにvimもインストールしました。

Dockerfileの中身は以下です。

FROM python:3.6

RUN apt-get update
RUN apt-get install -y vim
RUN pip3 install beautifulsoup4
RUN pip3 install html5lib

Docker Composeの確認

これ以降は、Windowsの場合はPowerShellで、Macの場合はターミナルで作業を行います。
以下のコマンドでDocker Composeを確認します。
(WindowsとMacでバージョンが違いました)

$ docker-compose --version

Windows:
docker-compose version 1.29.2, build 5becea4c
Mac:
Docker Compose version v2.4.1

Docker Desktopをインストールすると、同時にインストールされます。

Docker Composeについては、以下の記事も参考にしてください。

Dockerfileイメージの作成

カレントディレクトリを先ほど作成したフォルダへ移動します。

Windows:
$ cd D:\docker\python-scraping\
Mac:
% cd ~/Documents/python-scraping/

docker buildコマンドを実行します。
-tは名前ですので、任意で指定してください。

$ docker build -t python-scraping ./

次にdockerコマンドでイメージがあるか確認します。

docker images

以下のように表示されました。
「python-scraping」というイメージが作成されましたね!

REPOSITORY                 TAG                 IMAGE ID            CREATED              SIZE
python-scraping            latest              b34a26c01exx        About a minute ago   980MB

きちんと環境が入っているか確認します。
dockerコンテナを起動します。

$ docker run -it --name ct-py-scraping  python-scraping /bin/bash

Pythonのバージョンの確認と、beautifulsoup4がインストールされていることを確認します。
大丈夫ですね。

root@7eb7719e96xx:/# python --version

Python 3.6.15

root@7eb7719e96xx:/# pip list

Package        Version
-------------- -----------
beautifulsoup4 4.11.1
html5lib       1.1
pip            21.2.4
setuptools     57.5.0
six            1.16.0
soupsieve      2.3.2.post1
webencodings   0.5.1
wheel          0.37.0

docker hubへアップロード

docker hubでは、すでに公開されているdockerイメージの検索や、独自のイメージを公開することができます。
無料では、プライベートリポジトリ(非公開リポジトリ)を1つ使うことができます。
公開リポジトリは無制限です。

Pricing - Docker
jQuery(document).ready(function ($) { $('').tooltip({ position: { my: 'left-27 bottom-10', at: 'center top', using: function(position, feedback) {

docker hubを利用するには、アカウントが必要になります。
まだ取得していない場合は、アカウントの作成をしてください。

Dockerのインストール方法は、以下の記事をご覧ください。

Windows
Mac

公開リポジトリであれば、コマンドから直接プッシュすることができます。
まずは、すでに作成したイメージに対して、dockerアカウント名とイメージのタグを指定してイメージを作成します。

docker tag [イメージID] [docker hubアカウント]/[イメージ名]:タグ

$ docker tag b34a26c01xxx chigusaweb/python-scraping:latest

docker imagesでイメージを確認します。

$ docker images

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
chigusaweb/python-scraping   latest              b34a26c0xxxx        23 hours ago        980MB

上記のイメージをプッシュしてみます。

$ docker push chigusaweb/python-scraping:latest

ログインしていないため、エラーになりました。

denied: requested access to the resource is denied

dockerでログインします。Username、Passwordを入力してログインします。

$ docker login

Login Succeededとなったら、再度プッシュします。

$ docker push chigusaweb/python-scraping:latest

暫く待つと完了します。

$ docker push chigusaweb/python-scraping:latest

The push refers to repository [docker.io/chigusaweb/python-scraping]
9b8a23c0fdxx: Pushed
d14d37a65cxx: Pushed
68e00a9afdxx: Pushed
d0ad9c24b6xx: Pushed
22fc232df2xx: Mounted from library/python
8296c34d06xx: Mounted from library/python
4d29b148a1xx: Mounted from library/python
bd5afbfde6xx: Mounted from library/python
0fe19df8b8xx: Mounted from library/python
b17cc31e43xx: Mounted from library/python
12cb127eeexx: Mounted from library/python
604829a174xx: Mounted from library/python
fbb641a8b9xx: Mounted from library/python
latest: digest: sha256:5842d341296c8852a28d75e490b3188387156c96baxx size: 3063

以下のような感じで公開されました!

Docker Hub

この公開されたイメージを使用するには、以下のコマンドでpullすることができます

$ docker pull chigusaweb/python-scraping

さいごに

dockerイメージを作成し、docker hubに公開しました。
このイメージを使ってのスクレイピングの実装は別な機会にまとめたいと思います。😊

他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。

\オススメ/

コメント

タイトルとURLをコピーしました