DockerによるLinuxサーバ上のPython環境の作成(プライマリサーバ)
なぜDockerを使うのですか?
Linuxサーバ上でPython環境を構成するには、プロジェクトに関連するPython環境でパッケージ管理が必要ですが、毎回適応しにくいです.パッケージ依存性によるエラーやPythonバージョンの違いによって変更された関数を排除したり、環境変数の設定など、私が心を込めて設定した設定をサーバに移動したり、設定を他のサーバや私の環境に適用したりした場合、OSSによって設定が面倒になり、Dockerを利用して環境に合ったDockerイメージを簡単に作成することができます.環境を迅速に構成します.
Dockerfileを作成する方法もありますが、ドッキングコンテナに直接接続して環境を構成します.
Dockerfileを作成するには、Google検索で説明しやすい点が多く、https://docs.docker.com/engine/reference/builder/でDockerfileを簡単に作成できるため、これを選択します.
1.Dockerイメージの作成
📌Python Version = 3.8.13
1-1. DockerイメージDockerハブからインポート
# docker pull python:3.8
3.8: Pulling from library/python
Digest: sha256:8b0fc420ec9b030c8c788ecd6dc9ad6b2f695dce183dc6a470f74c732e019a4a
Status: Downloaded newer image for python:3.8
docker.io/library/python:3.8
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
remote_jupyter latest cd58f260bfad 46 hours ago 1.23GB
python 3.8 0a91fd9cc482 3 days ago 912MB
docker images
では、Python 3.8のバージョンがDocker Hubからリリースされていることがわかります.
1-2. Dockerコンテナの作成
# docker run -d -it --name my_python -p 10880:8888 python:3.8
b65eb318f92cbcac4741d0f8a47b526f98ee152c519dff1d260f31cee03d5de1
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b65eb318f92c python:3.8 "python3" 6 seconds ago Up 3 seconds 0.0.0.0:10880->8888/tcp my_python
オプションの説明
-d:docker内部で追加モードで実行する必要のない要素をバックグラウンドで実行できます.
-i:コンテナに接続せずに連続したコマンド入力を受信
-t:TTYモードを使用します.Bashを使用するには、このオプションを設定する必要があります.
-p:myport:ポートをcontainer portに転送# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b65eb318f92c python:3.8 "python3" 6 seconds ago Up 3 seconds 0.0.0.0:10880->8888/tcp my_python
docker ps -a
コマンドは、コンテナが正常に動作していることを確認します.
1-3. DockerコンテナCLI接続
# docker exec -it my_python bin/bash
root@b65eb318f92c:/#
これは、docker execコマンドを使用し、-it(cli 접속)
オプションを使用して、<コンテナ>のbinファイル内でbashを実行することを意味します.
1-4. Python環境の設定
1-4-1. Pythonバージョンの確認
# python --version
Python 3.8.13
1-4-2. Python仮想環境の作成
vertuarenvを使用して環境を構成します.# cd home
# mkdir work
# ls
work
# pip install virtualenv
ホームディレクトリに移動し、workというフォルダを作成し、vertulenvをダウンロードしてホームで仮想環境を作成します.# python -m venv .venv
# ls -a
. .. .venv work
.venvという仮想環境管理フォルダを作成します.# source ./.venv/bin/activate
# which python
/home/.venv/bin/python
ソースコマンドによる<仮想環境フォルダ>//activateコンテンツの実行
pythonの場所を確認すると、仮想環境Pythonに適用されていることがわかります.
1-4-3. 必要なパッケージのダウンロード
ここではジューペテルサーバの連動のみを記録しているので、必要な人はそれぞれインストールしてください.# pip install --upgrade pip
# pip install jupyterlab
pipバージョンを最新バージョンにアップグレードし、バージョンの競合を回避
私がJupyter labを選んだのは、Jupyter labが好きなのでJupyter labを選んだのですが、Jupyter notebookとか他の場合、この手順は同じですので、選択して使用してください.
1-4-4. apt upgradeとvim editorダウンロード
# apt-get update
# apt-get install vim
1-4-4. jupyterプロファイルの作成
# jupyter notebook --generate-config -y
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
生成されたパスの確認
1-4-5. jupyterプロファイルの変更
# ipython
Python 3.8.13 (default, Mar 31 2022, 00:26:41)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$dDRJ6dknUMy1277hlE60mg$0aQlg75qiRXJppnYTo6rKVXApyixaYVZH++Rc8SMdp4'
ipythonを実行してhashパスワードを作成してコピーします.ctrl+z
でipythonをリリース# vi ~/.jupyter/jupyter_notebook_config.py
viエディタとして実行します.
「」を入力して、下線の一番下に移動します.
iで入力モードに入ります.c=get_config()
c.NotebookApp.ip='localhost'
c.NotebookApp.open_browser=False
c.NotebookApp.password='argon2:$argon2id$v=19$m=10240,t=10,p=8$j0lA7sC6xTk3x4b3rd7vFw$DdCUnYmzWUWrfsI4UoV3pA'
c.NotebookApp.password_required=True
c.NotebookApp.port=8888
c.NotebookApp.iopub_data_rate_limit=1.0e10
c.NotebookApp.terminado_settings={'shell_command': ['/bin/bash']} # terminal을 bash로 실행
下線に内容を追加します.
Esc->:wq書き込みを入力してVimエディタを終了します.
1-5. Jupeter接続の確認
1-5-1. Jupeterサーバの起動
私の場合、JupeterサーバはバックグラウンドでもCLIも使いたいので、後でJupeterモードで実行しました.
以前のようにJupeterノートパソコンを実行したい場合は、nohup &
を外してください.# nohup jupyter lab --ip 0.0.0.0 --allow-root &
[1] 880
jupyter labにlocalhost
のroot権限を付与することによって実行されます.
PID 880で実行されることを示します.nohup로 실행할 때는 엔터를 두번 쳐 주시면 됩니다.
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:39 pts/0 00:00:00 python3
root 16 0 0 06:52 pts/1 00:00:00 bash
root 865 16 0 07:28 pts/1 00:00:00 /home/.venv/bin/python /home/.venv/bin/ipython
root 869 0 0 07:30 pts/2 00:00:00 bin/bash
root 880 869 0 07:38 pts/2 00:00:00 /home/.venv/bin/python /home/.venv/bin/jupyter-lab --ip 0.0.0.0 --allow-
root 882 869 0 07:40 pts/2 00:00:00 ps -ef
ps -ef
をもう一度確認してください
1-5-2. ジュピット接続
Webブラウザを実行し、127.0.0.1:port(10880)
またはlocalhost:port(10880)
に接続します.
先ほど設定したパスワードを入力します.
/homeディレクトリに基づいて実行されるjupyterlabを表示できます.
1-6. 画像ファイルを保存
これで、すべてが順調であることを確認しました.画像ファイルをローカルファイルに保存してください.
他のオペレーティングシステム(Linux、Woo奮闘、Macなど)にもDockerのみがインストールされ、イメージファイルのみが保存されている場合は、これまで設定した環境で実行できます.
以前に使用したコンテナ内部cliに加えて、オペレーティングシステム上のcliは続行されます.# docker commit my_python my_python:3.8.13
docker commit<コンテナ名><コミットする画像名:tag>を使用して、コンテナ内容を画像として作成します.# docker save -o my_python.tar my_python:3.8.13
docker save-o(ファイル出力)コンテナ画像をローカルファイル<出力するファイル名><画像名:tag>に保存します.
my_python.tarファイルが作成されているかどうかを確認できます.
2.Dockerイメージを読み込み、他の環境で使用
2-1. Dockerイメージのロード
私が使用しているサーバ環境はLinuxや執筆時にサーバを復元できないためmac上で実行します.이미지를 통한 작업을 해보시고 Dockerfile을 만들어서 Dockerfile을 통한 build로 진행하시는 것을 권유드립니다.
# docker load -i my_python.tar
docker load-i(tar archive fileから読み込む)コマンドは、ローカルファイルをdockerイメージファイルにロードします.# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my_python 3.8.13 4a39243501c2 26 minutes ago 1.39GB
2-2. Dockerイメージコンテナと接続
イメージが正しくロードされていることがわかります.
次に、画像をコンテナとして実行し、接続します.# docker run -d -it my_python -p 10880:8888 -v $(pwd):/home/work
オプションの説明
-v:volumeの略称は<ユーザディレクトリ>:<コンテナディレクトリ>docker exec -it my_python bin/bash
cliに接続すると、正常に動作していることがわかります.
これで、以前のように仮想環境に接続してjupyter labを実行できます.
2-3. Jupeterサーバの起動
# cd home
# source .venv/bin/activate
# nohup jupyter lab --ip 0.0.0.0 --allow-root &
実行後にポート転送のipに接続します.
2-4. 外部接続の検証
ポート転送されたIPはmacプライマリサーバに接続されている.
3.終了
Dockerイメージを作成した後、読み込んで適用するチュートリアルは、自分の好みに合わせて使用してください.
Reference
この問題について(DockerによるLinuxサーバ上のPython環境の作成(プライマリサーバ)), 我々は、より多くの情報をここで見つけました
https://velog.io/@rsj9987/Docker-활용하여-리눅스-서버에-파이썬-환경-만들기주피터-서버
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
📌Python Version = 3.8.13
1-1. DockerイメージDockerハブからインポート
# docker pull python:3.8
3.8: Pulling from library/python
Digest: sha256:8b0fc420ec9b030c8c788ecd6dc9ad6b2f695dce183dc6a470f74c732e019a4a
Status: Downloaded newer image for python:3.8
docker.io/library/python:3.8
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
remote_jupyter latest cd58f260bfad 46 hours ago 1.23GB
python 3.8 0a91fd9cc482 3 days ago 912MB
docker images
では、Python 3.8のバージョンがDocker Hubからリリースされていることがわかります.1-2. Dockerコンテナの作成
# docker run -d -it --name my_python -p 10880:8888 python:3.8
b65eb318f92cbcac4741d0f8a47b526f98ee152c519dff1d260f31cee03d5de1
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b65eb318f92c python:3.8 "python3" 6 seconds ago Up 3 seconds 0.0.0.0:10880->8888/tcp my_python
オプションの説明-d:docker内部で追加モードで実行する必要のない要素をバックグラウンドで実行できます.
-i:コンテナに接続せずに連続したコマンド入力を受信
-t:TTYモードを使用します.Bashを使用するには、このオプションを設定する必要があります.
-p:myport:ポートをcontainer portに転送
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b65eb318f92c python:3.8 "python3" 6 seconds ago Up 3 seconds 0.0.0.0:10880->8888/tcp my_python
docker ps -a
コマンドは、コンテナが正常に動作していることを確認します.1-3. DockerコンテナCLI接続
# docker exec -it my_python bin/bash
root@b65eb318f92c:/#
これは、docker execコマンドを使用し、-it(cli 접속)
オプションを使用して、<コンテナ>のbinファイル内でbashを実行することを意味します.1-4. Python環境の設定
1-4-1. Pythonバージョンの確認
# python --version
Python 3.8.13
1-4-2. Python仮想環境の作成
vertuarenvを使用して環境を構成します.
# cd home
# mkdir work
# ls
work
# pip install virtualenv
ホームディレクトリに移動し、workというフォルダを作成し、vertulenvをダウンロードしてホームで仮想環境を作成します.# python -m venv .venv
# ls -a
. .. .venv work
.venvという仮想環境管理フォルダを作成します.# source ./.venv/bin/activate
# which python
/home/.venv/bin/python
ソースコマンドによる<仮想環境フォルダ>/pythonの場所を確認すると、仮想環境Pythonに適用されていることがわかります.
1-4-3. 必要なパッケージのダウンロード
ここではジューペテルサーバの連動のみを記録しているので、必要な人はそれぞれインストールしてください.
# pip install --upgrade pip
# pip install jupyterlab
pipバージョンを最新バージョンにアップグレードし、バージョンの競合を回避私がJupyter labを選んだのは、Jupyter labが好きなのでJupyter labを選んだのですが、Jupyter notebookとか他の場合、この手順は同じですので、選択して使用してください.
1-4-4. apt upgradeとvim editorダウンロード
# apt-get update
# apt-get install vim
1-4-4. jupyterプロファイルの作成
# jupyter notebook --generate-config -y
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
生成されたパスの確認1-4-5. jupyterプロファイルの変更
# ipython
Python 3.8.13 (default, Mar 31 2022, 00:26:41)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$dDRJ6dknUMy1277hlE60mg$0aQlg75qiRXJppnYTo6rKVXApyixaYVZH++Rc8SMdp4'
ipythonを実行してhashパスワードを作成してコピーします.ctrl+z
でipythonをリリース# vi ~/.jupyter/jupyter_notebook_config.py
viエディタとして実行します.「」を入力して、下線の一番下に移動します.
iで入力モードに入ります.
c=get_config()
c.NotebookApp.ip='localhost'
c.NotebookApp.open_browser=False
c.NotebookApp.password='argon2:$argon2id$v=19$m=10240,t=10,p=8$j0lA7sC6xTk3x4b3rd7vFw$DdCUnYmzWUWrfsI4UoV3pA'
c.NotebookApp.password_required=True
c.NotebookApp.port=8888
c.NotebookApp.iopub_data_rate_limit=1.0e10
c.NotebookApp.terminado_settings={'shell_command': ['/bin/bash']} # terminal을 bash로 실행
下線に内容を追加します.Esc->:wq書き込みを入力してVimエディタを終了します.
1-5. Jupeter接続の確認
1-5-1. Jupeterサーバの起動
私の場合、JupeterサーバはバックグラウンドでもCLIも使いたいので、後でJupeterモードで実行しました.
以前のようにJupeterノートパソコンを実行したい場合は、
nohup &
を外してください.# nohup jupyter lab --ip 0.0.0.0 --allow-root &
[1] 880
jupyter labにlocalhost
のroot権限を付与することによって実行されます.PID 880で実行されることを示します.
nohup로 실행할 때는 엔터를 두번 쳐 주시면 됩니다.
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:39 pts/0 00:00:00 python3
root 16 0 0 06:52 pts/1 00:00:00 bash
root 865 16 0 07:28 pts/1 00:00:00 /home/.venv/bin/python /home/.venv/bin/ipython
root 869 0 0 07:30 pts/2 00:00:00 bin/bash
root 880 869 0 07:38 pts/2 00:00:00 /home/.venv/bin/python /home/.venv/bin/jupyter-lab --ip 0.0.0.0 --allow-
root 882 869 0 07:40 pts/2 00:00:00 ps -ef
ps -ef
をもう一度確認してください1-5-2. ジュピット接続
Webブラウザを実行し、
127.0.0.1:port(10880)
またはlocalhost:port(10880)
に接続します.先ほど設定したパスワードを入力します.
/homeディレクトリに基づいて実行されるjupyterlabを表示できます.
1-6. 画像ファイルを保存
これで、すべてが順調であることを確認しました.画像ファイルをローカルファイルに保存してください.
他のオペレーティングシステム(Linux、Woo奮闘、Macなど)にもDockerのみがインストールされ、イメージファイルのみが保存されている場合は、これまで設定した環境で実行できます.
以前に使用したコンテナ内部cliに加えて、オペレーティングシステム上のcliは続行されます.
# docker commit my_python my_python:3.8.13
docker commit<コンテナ名><コミットする画像名:tag>を使用して、コンテナ内容を画像として作成します.# docker save -o my_python.tar my_python:3.8.13
docker save-o(ファイル出力)コンテナ画像をローカルファイル<出力するファイル名><画像名:tag>に保存します.my_python.tarファイルが作成されているかどうかを確認できます.
2.Dockerイメージを読み込み、他の環境で使用
2-1. Dockerイメージのロード
私が使用しているサーバ環境はLinuxや執筆時にサーバを復元できないためmac上で実行します.
이미지를 통한 작업을 해보시고 Dockerfile을 만들어서 Dockerfile을 통한 build로 진행하시는 것을 권유드립니다.
# docker load -i my_python.tar
docker load-i(tar archive fileから読み込む)# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my_python 3.8.13 4a39243501c2 26 minutes ago 1.39GB
2-2. Dockerイメージコンテナと接続
イメージが正しくロードされていることがわかります.
次に、画像をコンテナとして実行し、接続します.
# docker run -d -it my_python -p 10880:8888 -v $(pwd):/home/work
オプションの説明-v:volumeの略称は<ユーザディレクトリ>:<コンテナディレクトリ>
docker exec -it my_python bin/bash
cliに接続すると、正常に動作していることがわかります.これで、以前のように仮想環境に接続してjupyter labを実行できます.
2-3. Jupeterサーバの起動
# cd home
# source .venv/bin/activate
# nohup jupyter lab --ip 0.0.0.0 --allow-root &
実行後にポート転送のipに接続します.2-4. 外部接続の検証
ポート転送されたIPはmacプライマリサーバに接続されている.
3.終了
Dockerイメージを作成した後、読み込んで適用するチュートリアルは、自分の好みに合わせて使用してください.
Reference
この問題について(DockerによるLinuxサーバ上のPython環境の作成(プライマリサーバ)), 我々は、より多くの情報をここで見つけました https://velog.io/@rsj9987/Docker-활용하여-리눅스-서버에-파이썬-환경-만들기주피터-서버テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol