#はじめに
こんちはー.
前回は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のコンテナも建てました.