Dockerfileをビルドしてdocker hubに公開する
今回はDockerfileを作成、ビルドしイメージを作成します。
そのイメージをdocker hubに公開したいと思います。
これにより色んな人へdockerイメージの配布ができますね!
今回作成したイメージの使い方は、以下の記事を参考にしてください。
他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。
環境
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 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つ使うことができます。
公開リポジトリは無制限です。
docker hubを利用するには、アカウントが必要になります。
まだ取得していない場合は、アカウントの作成をしてください。
Dockerのインストール方法は、以下の記事をご覧ください。
公開リポジトリであれば、コマンドから直接プッシュすることができます。
まずは、すでに作成したイメージに対して、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
以下のような感じで公開されました!
この公開されたイメージを使用するには、以下のコマンドでpullすることができます。
$ docker pull chigusaweb/python-scraping
さいごに
dockerイメージを作成し、docker hubに公開しました。
このイメージを使ってのスクレイピングの実装は別な機会にまとめたいと思います。😊
他にも私のブログで、Dockerについて解説している記事がありますのでご覧ください。
コメント