コンピューターにpython3.6環境をセットアップするとき、次にコンピューターを変更するとき、またはLinuxシステムに変更するときは、コンピューターを再構築し、環境変数を設定し、pipをダウンロードするなどの操作を行う必要があります。
しばらくすると、pip.exeがScripsディレクトリに見つかりませんでした。また、pipは内部コマンドでも外部コマンドでもありません。また、pip:コマンドも見つかりません。環境のインストール数が多すぎると、ひどい涙になります。
多くの小さなパートナーにとって、環境の構築は学ぶのに障害になっています。今日からドッカーを学ぶために、環境の問題についてお別れします~~~
docker search:Docker Hub(https://hub.docker.com)から指定された画像を検索します
たとえば、centos7環境に基づいてインストールされたpython3.6バージョンをここで検索します
自動ビルドについては、公式ドキュメントを確認できます:https://docs.docker.com/docker-hub/builds/#how-automated-builds-work
docker search python
[ root@yoyo ~]# docker search python
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
python Python is an interpreted, interactive, objec… 4288[OK]
django Django is a free web application framework, … 847[OK]
pypy PyPy is a fast, compliant alternative implem… 193[OK]
kaggle/python Docker image for Python scripts run on Kaggle 123[OK]
arm32v7/python Python is an interpreted, interactive, objec… 37
centos/python-35-centos7 Platform for building and running Python 3.5… 36
joyzoursky/python-chromedriver Python with Chromedriver,for running automa… 33[OK]
circleci/python Python is an interpreted, interactive, objec… 29
nikolaik/python-nodejs Python with Node.js 18[OK]
arm64v8/python Python is an interpreted, interactive, objec… 17
centos/python-36-centos7 Platform for building and running Python 3.6… 17
centos/python-27-centos7 Platform for building and running Python 2.7… 15
iron/python Tiny Python Microcontainer 9
publicisworldwide/python-conda Basic Python environments with Conda.6[OK]
dockershelf/python Repository for docker images of Python. Test… 4[OK]
i386/python Python is an interpreted, interactive, objec… 3
bitnami/python Bitnami Python Docker Image 3[OK]
komand/python-plugin DEPRECATED: Komand Python SDK 2[OK]
centos/python-34-centos7 Platform for building and running Python 3.4… 2
muccg/python-base Base images that use python 1[OK]
amd64/python Python is an interpreted, interactive, objec… 1
ccitest/python CircleCI test images for Python 0[OK]
saagie/python Repo for python jobs 0
qbtrade/python python 3.6.5with requirements last update s… 0
openshift/python-33-centos7 DEPRECATED: A Centos7 based Python v3.3 imag… 0[root@yoyo ~]#
ダウンロードしたい上記のミラーイメージ centos / python-36-centos7
をダウンロードして、ローカルにダウンロードします
docker pull centos/python-36-centos7
[ root@yoyo ~]# docker pull centos/python-36-centos7
Using default tag: latest
latest: Pulling from centos/python-36-centos7
8 ba884070f61: Pull complete
c3dca185eb14: Pull complete
ee720ba20823: Pull complete
497 ef6ea0fac: Pull complete
ebf1fb961f61: Pull complete
b8249f70ce00: Pull complete
ebd817e2efe7: Pull complete
d3d10dd0937c: Pull complete
a8ad47ec8182: Pull complete
Digest: sha256:d10c46b6db436357965a96716e9f5d230d9b1a58c6db1f0c4f43c1fb1994cd79
Status: Downloaded newer image for centos/python-36-centos7:latest
[ root@yoyo ~]#
Dockerイメージを使用して、ローカルにダウンロードされたイメージを表示します
docker images
[ root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
Dockerは、分離されたコンテナーでプロセスを実行します。 docker runコマンドを実行すると、Dockerはプロセスを開始し、その排他ファイルシステム、ネットワークリソース、およびプロセスグループを、このプロセスをこのプロセスのルートプロセスとして割り当てます。
コンテナが起動すると、実行するバイナリファイル、公開されているネットワークポートなどがイメージで定義されている可能性がありますが、ユーザーはdockerrunコマンドを使用して再定義できます。
最も基本的なdockerrunコマンドの形式は次のとおりです。
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG…]
たとえば、ここでcentos7を起動し、インタラクティブモードに入り、dockerの2つのパラメーター-i -tを使用して、dockerによって実行されているコンテナーが「話す」機能を実現できるようにします。
docker run -i -t centos/python-36-centos7 /bin/bash
次のようにcentosターミナルに入った後、pythonインタラクティブ環境に入り、「hello world!I'm comeing !!!」と出力し、最後に終了して終了します。
[ root@yoyo ~]# docker run -i -t centos/python-36-centos7 /bin/bash(app-root) python
Python 3.6.3(default, Mar 202018,13:50:41)[GCC 4.8.520150623(Red Hat 4.8.5-16)] on linux
Type "help","copyright","credits" or "license"for more information.>>>print("hello world! I’m comming!!!")
hello world! I’m comming!!!>>>exit()(app-root) exit
Run plus -i -tは、インタラクティブモードに入ります。インタラクティブモードに入ってスクリプトを直接実行したくない場合は、echo "hello world"などの直接実行を使用すると、画面に「helloworld」と出力されます。
docker run centos/python-36-centos7 /bin/echo “hello world”
フォアグラウンドで実行したくない場合は、通常、オペレーティング環境でバックグラウンドをハングアップすることを選択します。-dパラメーターを追加するだけです。
docker run centos/python-36-centos7 /bin/echo “hello world”
[ root@yoyo ~]# docker run centos/python-36-centos7 /bin/echo "hello world"
hello world
[ root@yoyo ~]# docker run -d centos/python-36-centos7 /bin/echo "hello world"
1 e5c22451bf2215f6c098e066b74363f1db9cde97e9ecea02947ccbbf2fa7e8f
[ root@yoyo ~]#
-dを使用してバックグラウンドで実行した後、以下に長いリストがあることがわかります。これはコンテナーの一意のIDであり、このIDからコンテナーを見つけることができます。
最初にtraining / webappを実行します
docker run -d -p 5000:5000 training/webapp python app.py
docker psを使用して、実行中のコンテナを表示します
docker ps
[ root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
c9e8a325b145 training/webapp "python app.py"16 hours ago Up 16 hours 0.0.0.0:32768->5000/tcp
[ root@yoyo ~]#
上記のecho "hello world"は非常に単純な出力コマンドであり、実行後に閉じられるため、psは実行中のコンテナーを見つけることができません。-aパラメーターを追加して、実行されていないコンテナーを含むすべてのコンテナーを表示できます。
psパラメータ関連の構文を検索する
docker ps -a
[ root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1 e5c22451bf2 centos/python-36-centos7 "container-entrypoin…"10 minutes ago Exited(0)10 minutes ago hopeful_poincare
1 d14dd77352f centos/python-36-centos7 "container-entrypoin…"12 minutes ago Exited(0)12 minutes ago nervous_visvesvaraya
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…"13 minutes ago Exited(0)13 minutes ago quirky_cray
9 df329b5effd centos/python-36-centos7 "container-entrypoin…"13 minutes ago Exited(0)13 minutes ago nifty_roentgen
c9e8a325b145 training/webapp "python app.py"16 hours ago Up 16 hours 0.0.0.0:32768->5000/tcp kind_kirch
[ root@yoyo ~]#
これにより、上記のコンテナID 1e5c22451bf2
が見つかりますが、それほど長くはありません
コンテナIDで実行ログを確認できます
ドッキングログ[コンテナID]
[ root@yoyo ~]# docker logs 1e5c22451bf2
hello world
[ root@yoyo ~]#
コンテナの名前で表示することもできます。これはコンテナの名前であり、イメージ名ではないことに注意してください。コンテナ名は、上記の最後のNAMES値hopeful_poincareなど、システムによって自動的に割り当てられます。
[ root@yoyo ~]# docker logs hopeful_poincare
hello world
**- f:dockerログにtail-fのようにコンテナ内の標準出力を出力させます。 ****
docker logs -f 1e5c22451bf2
psを使用して、実行中のコンテナを表示できます
docker ps
[ root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9e8a325b145 training/webapp "python app.py"17 hours ago Up 17 hours 0.0.0.0:32768->5000/tcp kind_kirch
コンテナを停止するには、停止コンテナのIDまたはコンテナの名前を使用できます
docker stop c9e8a325b145
または、停止するコンテナ名kind_kirchを指定します
docker stop kind_kirch
コンテナの開始を開始する
[ root@yoyo ~]# docker start c9e8a325b145
c9e8a325b145
[ root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9e8a325b145 training/webapp "python app.py"17 hours ago Up 5 seconds 0.0.0.0:32769->5000/tcp kind_kirch
[ root@yoyo ~]#
実行中のコンテナは、dockerrestartコマンドで再起動できます
[ root@yoyo ~]# docker restart c9e8a325b145
c9e8a325b145
[ root@yoyo ~]#
docker rmコマンドを使用して、不要なコンテナーを削除します
[ root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1 e5c22451bf2 centos/python-36-centos7 "container-entrypoin…"24 minutes ago Exited(0)24 minutes ago hopeful_poincare
1 d14dd77352f centos/python-36-centos7 "container-entrypoin…"27 minutes ago Exited(0)27 minutes ago nervous_visvesvaraya
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…"27 minutes ago Exited(0)27 minutes ago quirky_cray
9 df329b5effd centos/python-36-centos7 "container-entrypoin…"27 minutes ago Exited(0)27 minutes ago nifty_roentgen
c9e8a325b145 training/webapp "python app.py"17 hours ago Up 41 seconds 0.0.0.0:32770->5000/tcp kind_kirch
[ root@yoyo ~]# docker rm 1e5c22451bf2
1 e5c22451bf2
[ root@yoyo ~]# docker rm 1d14dd77352f
1 d14dd77352f
[ root@yoyo ~]# docker rm kind_kirch
Error response from daemon: You cannot remove a running container c9e8a325b14534f0b27cfd34e3ceefd16f6a6c9f136c0305d4e60de61f2badc3. Stop the container before attempting removal or force remove
[ root@yoyo ~]#
ただし、rmがコンテナで実行されている場合、エラーが報告されます。rmの前に停止する必要があります。
[ root@yoyo ~]# docker stop kind_kirch
kind_kirch
[ root@yoyo ~]# docker rm kind_kirch
kind_kirch
[ root@yoyo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[ root@yoyo ~]#
Recommended Posts