広告

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

Docker

当サイトではアフィリエイト広告を利用しています。

広告

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

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

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

【Python】スクレイピングの基本から実践
Pythonでスクレイピングを行ってみたいと思います。Webサイトのデータを自動的に取得してみましょう!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については、以下の記事も参考にしてください。

【Docker Compose】Wordpressを簡単構築
複数のコンテナを使う場合に、Docker Composeを使うと便利です。複数のコンテナの定義をymlファイルに記載し利用できます。

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のインストール方法は、以下の記事をご覧ください。

Windows
【Docker Desktop】Windowsにインストール(WSL2)
WindowsにDockerをインストールする手順を解説します。ついでにPython環境を、コンテナに構築してみたいと思います。
Mac
【Docker Desktop】Macにインストール【Monterey/M1】
MacにDockerをインストールする手順を解説します。ついでにPython環境を、コンテナに構築してみたいと思います。

公開リポジトリであれば、コマンドから直接プッシュすることができます。
まずは、すでに作成したイメージに対して、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

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

chigusaweb/python-scraping – Docker Image

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

$ docker pull chigusaweb/python-scraping

さいごに

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

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

DockerMacOSPythonWindowsツールプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。 また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。 定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。 パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。 Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。 例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。 いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。 テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。 初心者の方はもちろん、もっと速く計算したい方にも役立ちます。 5万対局以上の実践から問題を収録。

コメント

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