Dockerコマンドまとめ(selenium実行時の注意点)
こんにちはYouパパです
需要あるかわかりませんが、主に自分用のメモ
seleniumを用いたスクレイピング・RPAなどの際に詰まるポイントもあったので、備忘録として
Dockerfile → イメージ → コンテナ
と作成する方法
Doker for Windowsをインストールして、cmdで以下実行可能
FLASKアプリを別のPCのローカルで動かしたい時(元のPCは消した状態)、 かつ、pythonインストールなしでもできる方法
Dokerfileに関して
・PythonのSereniumを使う場合は、Runでchromeをインストールしておく必要がある(例文参照)
・保存場所は、app.pyと同じ階層にする必要がある
・requirements.txtには、「ライブラリ名 \@~」があるとエラー
(「ライブラリ名 バージョン」のみにする)
・Dokerfileは、「Dokerfile」というファイル名じゃないとダメ
――――――――
Dokerイメージに関して
・cmdでDokerfileとapp.pyがあるフォルダに移動してから、下コマンド実行で、Dokerfileからイメージ作成
docker build -t flask-scheduler-app .
(flask-scheduler-app:イメージ名)
――――――――
Dockerコンテナに関して
完成形
Docker コンテナをコア数 4 で起動し、コンテナ名を「container-flask-scheduler-app」と指定するには、以下のコマンドを使用します。このコマンドは、flask-scheduler-app というイメージからコンテナを作成し、ポート 5000 をホストとコンテナ間でマッピングします。
docker run -d --name container-flask-scheduler-app --cpus="4.0" -p 5000:5000 flask-scheduler-app
各オプションの説明
d: コンテナをバックグラウンドで実行します。
-name container-flask-scheduler-app: コンテナに container-flask-scheduler-app という名前を割り当てます。
-cpus="4.0": コンテナに 4 コアの CPU 使用量を割り当てます。
p 5000:5000: ホストの 5000 番ポートとコンテナの 5000 番ポートをマッピングします。
flask-scheduler-app: 使用する Docker イメージの名前です。
使用例
特定の CPU コア数を割り当てる:docker run -d --cpus="2.0" my-image このコマンドは、コンテナに 2 コアの CPU を割り当てます。
特定の CPU コアを割り当てる:docker run -d --cpuset-cpus="0-3" my-image このコマンドは、コンテナに CPU の 0 から 3 のコアを割り当てます。
※コア数を割り当てないと、デフォでは1個しかコアを割り当てられない → Selenium起動時に、CPU使用率100%になって、適切に処理できなくなる(elementのサーチなどができず、「elementがない」という判定になった)
コンテナに名前を付ける方法
基本的なコマンド構文:docker run --name [コンテナ名] [その他のオプション] [イメージ名] ここで、[コンテナ名] には任意の名前を指定し、[イメージ名] は使用する Docker イメージの名前です。
使用例
名前を付けてコンテナを起動:docker run --name my-container -d my-image この例では、my-container という名前のコンテナを my-image イメージから起動します。
コンテナの再起動手順
コンテナの停止:
最初にコンテナを停止する場合は、docker stop [コンテナ名またはID] コマンドを使用します。
例: docker stop my-container
コンテナの再起動:
コンテナを再び起動するには、docker start [コンテナ名またはID] コマンドを使います。
例: docker start my-container
――――――――
Dokerで作成したコンテナを他のPCで、他のユーザーが使う方法
Dokerで作成したコンテナを他のPCで、他のユーザーが使うには?
ChatGPT
Dockerで作成したコンテナを他のPCで他のユーザーが使うためには、以下のステップに従います:
コンテナのイメージを作成: 最初に、既存のコンテナからイメージを作成します。これはdocker commitコマンドを使って行います。 docker commit [コンテナ名] [新しいイメージ名]
イメージを保存: 次に、作成したイメージをファイルとしてエクスポートします。これにはdocker saveコマンドを使用します。 docker save -o [ファイル名.tar] [イメージ名]
イメージの転送: 作成したtarファイルを他のPCに転送します。これにはUSBドライブ、クラウドストレージ、Eメールなど、任意の方法を使用できます。
イメージの読み込み: 他のPCで、転送したイメージファイルをDockerに読み込ませます。これにはdocker loadコマンドを使用します。 docker load -i [ファイル名.tar]
コンテナの実行: 最後に、新しいPC上でイメージからコンテナを起動します。 docker run -d [イメージ名]
これらの手順により、一つのPCで作成したDockerコンテナを別のPCで使用することが可能になります。なお、他のユーザーがDocker環境を持っている必要があります。
――――――――
Flask(app.py)に関して
app.pyで必要なchromeオプション
・Headless
・メモリを制限させない
・Windowサイズを大きくしておく(Elementをサーチするため)
options.add_argument('--headless=new')
options.add_argument("--no-sandbox") # sandboxモードの無効化(Dockerで必要だった)
# -disable-dev-shm-usage:共有メモリに/dev/shmではなく/tmpを使用するようにChromeに指示。
# Dockerコンテナは通常、/tmpディレクトリの方が/dev/shmよりも空き容量が多いため、共有メモリの不足による問題を防ぐことができます。
options.add_argument("--disable-dev-shm-usage") # メモリ問題の防止(Dockerで必要だったかも)
options.add_argument("--window-size=1920,1080") # ウィンドウサイズの設定(必要に応じて)
この記事が気に入ったらサポートをしてみませんか?