見出し画像

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 イメージから起動します。

コンテナの再起動手順

  1. コンテナの停止:

    • 最初にコンテナを停止する場合は、docker stop [コンテナ名またはID] コマンドを使用します。

    • 例: docker stop my-container

  2. コンテナの再起動:

    • コンテナを再び起動するには、docker start [コンテナ名またはID] コマンドを使います。

    • 例: docker start my-container



――――――――

Dokerで作成したコンテナを他のPCで、他のユーザーが使う方法

Dokerで作成したコンテナを他のPCで、他のユーザーが使うには?
ChatGPT
Dockerで作成したコンテナを他のPCで他のユーザーが使うためには、以下のステップに従います:

  1. コンテナのイメージを作成: 最初に、既存のコンテナからイメージを作成します。これはdocker commitコマンドを使って行います。 docker commit [コンテナ名] [新しいイメージ名]

  2. イメージを保存: 次に、作成したイメージをファイルとしてエクスポートします。これにはdocker saveコマンドを使用します。 docker save -o [ファイル名.tar] [イメージ名]

  3. イメージの転送: 作成したtarファイルを他のPCに転送します。これにはUSBドライブ、クラウドストレージ、Eメールなど、任意の方法を使用できます。

  4. イメージの読み込み: 他のPCで、転送したイメージファイルをDockerに読み込ませます。これにはdocker loadコマンドを使用します。 docker load -i [ファイル名.tar]

  5. コンテナの実行: 最後に、新しい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")  # ウィンドウサイズの設定(必要に応じて)


この記事が気に入ったらサポートをしてみませんか?