LoginSignup
1
2

More than 1 year has passed since last update.

初心者の0から始めるDocker生活[pythonコンテナ編 feat.Windows WSL2]

Last updated at Posted at 2021-08-20

はじめに

こんちはー.
前回はmacにDockerを入れて遊んでみました.
RAMが8GBしかないせいでdocker遊び障害者になったので,
Windows,WSL2にpythonのコンテナを作って動作確認までします.

unixコマンドの説明もしていくので,参考になれば幸いです.

それでは,れっつごー.

環境

  • OS: Windows10 Pro
  • CPU: intel Corei9-9900k
  • GPU: Nvidia GeForce RTX 2080Super
  • RAM: 32GB

Dockerでpythonのコンテナを作る

ホームディレクトリ(cmd,PowerShellで開いた最初に出てくるディレクトリ)で以下のコマンドをやります.

mkdir dock
cd dock
emacs Dockerfile

1行目mkdirは,ディレクトリ(簡単に言うフォルダ)を作るコマンドです.
こいつでdockというフォルダを作ります.

2行目cdは,簡単に言うフォルダ移動です.
こいつでさっき作ったdockのフォルダ内に移動します.

3行目emacsはエディタです.僕が愛用しています.
デフォルトで入っていない場合は,nanoを使いましょう.
(GUIでのやり方はわからないので,やりたい方がいれば検索してみてください.)

ちょこちょこファイルをいじる分にはnanoで十分です.(最近までnanoでいじいじしてた)

Dockerfileには,下のものをコピペしましょう.
全人類emacsを使いましょう.(圧力)

FROM python:3
USER root

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
    ENV LANG ja_JP.UTF-8
    ENV LANGUAGE ja_JP:ja
    ENV LC_ALL ja_JP.UTF-8
    ENV TZ JST-9
    ENV TERM xterm

RUN apt install -y emacs
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools                  

Dockerfileというやつは,設計図と考えてもらって大丈夫です.
こいつを元に,機械が型を作ります.

emacsのインストールの引数 -y は,
インストールの時にYes/Noと聞かれるものに自動的にyesと回答して進めてくれます.
ないとyes/noで止まってしまうので注意!

じゃあビルド(型を作る)していきましょう.

 docker build -f ./Dockerfile -t python .

これ最後にピリオドついてるの罠すぎる
気づいた瞬間キレた()
このピリオドは,現在のディレクトリにビルドするよーって意味だと思います.(たぶんそう)

ビルドできたらdocker imagesで確認しましょう.

REPOSITORY               TAG       IMAGE ID       CREATED          SIZE
python                   latest    2f672f8444e0   47 seconds ago   1.24GB

できたので,実際に動かしていきませう.
さっきビルドしたイメージ(型)を元にコンテナ(製品)を作ります.

引数
- t : 新しいコンテナの中にターミナルを作ってくれる
- i : コンテナの中と外に双方向に接続できる
- d : コンテナをバックグラウンドで動かしてくれる
- p : ポートの指定ができる

docker run -itd --name py python

もしubuntuなどのOSのコンテナを立てる場合は,
- u : コンテナ接続時のユーザーを指定する
rasuk(user)のところは,自分がDockerfileで指定したユーザ名を書きましょう.

 docker run -itd -u user --name py python

runしていきましょー

e3fed0039b07ec9f3832d4cca51300e5192347d2e494661a84817859f34d34b5

ってのがでると(みんな違う数になると思います.一緒だったら縁ですね.連絡ください)
本当に起動してるかdocker psで確認しよう

CONTAINER ID   IMAGE     COMMAND    CREATED         STATUS      PORTS       NAMES
ed06f8a425ec   python   "python3"  27 seconds ago   Up 26 seconds                py

なんか起動したっぽい?

そいじゃ作ったコンテナに接続してみましょー
bash は,bashのシェルで起動してくれる,というものらしいです.
なので,zsh派もここで色々できるかな?

docker exec -it py bash

これで接続できました.

最後に

エラーが出たら,一回そこのエラー文全文コピペしてググってみましょう.
なんかいきてるなぁって感じがすると思います.

次は,SQL編でお会いしましょう.ばいちゃー

エラー処理編(今回のpython編じゃ全く関係ない話)

docker run~~~~で,
こんなエラーを吐きもうしたら,,,,,

3071f5980f66766d05e6605dbf2446642d1f974ead3425c540d96810ab78479f
docker: Error response from daemon: unable to find user username: no matching entries in passwd file.

userの設定がうまくいってないかもしれません.
DockerFileを確認してユーザ名チェックしてみてください.
そんで実は,エラーは吐いてるけど裏でコンテナが動いています.
確認は,

docker ps -a

でみると,あると思います(適当).
なかったらググってみてください(調べて追記しときます).
で,裏で動いてるコンテナを消さないと,runしてもエラーでコンテナが立ちません.

docker rm コンテナ名

で消せます.

追記

pythonのコンテナ建てるくらいじゃつまんないと思うので,Ubuntuのコンテナも建てました.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2