GCAにアプリをデプロイするのに必要なDocfile
それの書き方を理解するためにDockerを触ったので記録してきます。
私の環境はWindows10です。
Docker自体はWindowsの場合は64bitでないと動かないので注意ください。
環境設定
インストール画面で下記がでますが、
WSL2はWindowsでLinuxを動かすツールで
Dokcerの開発に必要なのでチェックをつけておきましょう。
再起動するとまだWSL2がインストールされていないと表示されるので、
リンクからx64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ
をクリックしてインストールをします。
インストールが終わったらRestart
ボタンをクリックしてDockerが開けるようになっています。
先ほどWSL2をインストールした画面で手順4までが完了しているので、
ドキュメントの手順5,6を実行していきます。
powershellで下記コマンドを実行してデフォルトのバージョンを設定
wsl --set-default-version 2
その後、Microsoft StoreでUbuntuのインストールとユーザー、PW設定を行います。
終わったら右下のDockerのアイコンを右クリック ⇒ settingsで
Ubuntuのボタンにチェックをつけます。
先程開いたUbuntuのターミナルで下記コマンドを実行し、dockerのバージョンが確認できたら設定完了です。
docker --version
VSCodeで実行する場合は
Ctrl + Shift + P
を押して、
create new integrated terminal
をクリックします。
ターミナルの種類でUbuntu(WSL)を選択して同じくdockerのバージョンが確認できるか確認しましょう。
Ubuntuのターミナルで実行してもよいですが、
VSCodeだけ開いて操作できたほうが楽でよいと思います。
コマンド
よく使用するコマンドです。
基本的にはDockerfileをおいているディレクトリで実行します。
# Dockerfileでイメージの作成、tオプションでイメージ名とタグを指定可能
docker image build [-t image_name[:tag_name]] .
# イメージ名からコンテナ作成実行(image pull, container create, container start)をまとめたもの
docker container run [option] image_name
# オプション例
docker container run -d -p 8000:8080 --name container_name -v ${PWD}/src:/src image_name
オプションについてdocker-compose.yml
ファイルを作成したらその中で記載が可能です。
# docker-compose.ymlでimage build, container create, container startの動作が行われる
# imageが作成されていたらimege buildは行われない
docker compose up -d
# イメージの作成
docker compose build
# コンテナを作成してコマンド実行
docker-compose run [コンテナ名] [コマンド]
# 起動中のコンテナでコマンド実行
docker-compose exec [コンテナ名] [コマンド]
# コンテナの終了
dokcer compose down
オプション
オプション | 実行内容
- | -
--name コンテナ名 | コンテナ名の指定
-p ホストのポート番号:コンテナのポート番号| ポート番号の指定
-v ホストのディレクトリ:コンテナのディレクトリ|ボリュームのマウント
--net=ネットワーク名|コンテナをネットワークに接続
-e 環境変数名=名前|環境変数を指定
-d|バックグラウンド(detach)で実行
-i|コンテナに操作端末(キーボード)をつなぐ(interactive)
-t|特殊キーを使用可能にする(tty)
--help|ヘルプを参照
削除コマンド
よく使いそうなコマンドです。
# コンテナの確認
docker ps [-a]
dokcer container list [-a]
# コンテナを止める
docker compose stop
docker container stop container_name
# 動いていないコンテナ、イメージ、ネットワークを削除
docker system prune -a
他の一括削除についてはこちらを参考にさせていただいています。
https://qiita.com/reflet/items/5caa88abcf1e8964783a
system prune
でVolumeは削除されない?確認必要
error
[internal] load metadata for docker.io/library/python:3
このエラーがで出た場合はこちらの記事を参考に変更したら動きました。
Dockerで作成した環境
JupyterLab環境
Streamlit環境