Open2

dockerの勉強

kotaprojkotaproj

windows環境の構築

  • CPUの仮想支援機能の有効化
    • Intel Virtualization Technologyを有効化
    • UEFIファームウェア(BIOS)から
      • windows - 「設定>更新とセキュリティ>回復」から「今すぐ再起動」
  • WSL2のインストール
    • 「設定 >Windowsの機能の有効化または無効化」
    • 「仮想マシンプラットフォーム」(下の方)を☑
      • ここで再起動が必要な場合あり
    • 管理者として、PowerShellを実行し以下を確認
  • WSL - Ubuntuのインストール
    • Microsoft Storeみたいに、Ubuntuをインストール
    • 起動後、動けばok
  • Docker Desktopのインストール
    • https:// www. docker. com/ products/ docker-desktop よりダウンロード
    • インストール時、以下の項目を確認
      • "Enable WSL2 Windows Features"
    • インストール後、Settingsから以下を確認
      • General : Start Docker Desktop when you log in
      • General : Use the WSL2 based engine
      • Resources : Enable integration with my default WSL distro
  • DockerHubの登録
    • https:// hub. docker. com/ より「 Sign Up」

動作の確認

docker run -it --rm python
kotaprojkotaproj

基本コマンド

[image]コマンド

[ls, rm]イメージの一覧表示→削除→表示

> docker image ls   
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE 
python       latest    49e3c70d884f   2 weeks ago   885MB

> docker image rm 49e3c70d884f
Untagged: python@sha256:07c51c65ab9c1a156a1fb51eff3ec04feff7b85b2acb7d6cc65148b218d67402
Deleted: sha256:49e3c70d884f2640959e0392c03f5352d852e673a28dca3b16d2d9c400149906
Deleted: sha256:66570c78d54700760dfb2f675865e487762b6bc36220901b0a08f939ff602ae0
Deleted: sha256:6d67af3ca0b835d4d5902ba4284e2ff38d90980d336b2f8faf6ab6373efef373
Deleted: sha256:8933b2fffa27d3d204da326cf6244865663e9906034f14e540c617e1aac0c1d1
Deleted: sha256:271fda04686ab23e4a2707071cbe186f4b1087b487be95fae68541fd73fd3217
Deleted: sha256:ee633e736a09f20bf49f2efb1a741824fbc3559053b10c8b76c5d7835461ac79
Deleted: sha256:ac996dca9c2f86e5d2744187de88cd328f12dde417a7950dff33448906228ae3
Deleted: sha256:e4ed057c6550560fb44b9146dadd5c62bfc00404ba69937c89a44e10485c9010
Deleted: sha256:985d0a2cd810a6fc7b68886aee94ee060acd63e122a1def04370dac5fa9d05f6
Deleted: sha256:e2c6ff46235709f5178ab7c1939f4fba7237ffde84e13b1582fa5f0837c1d978
> docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
> 

[prune]不要なイメージを一括削除

> docker image prune -a

[pull]DockerHubからイメージを取得

> docker image pull python:3.8-slim
3.8-slim: Pulling from library/python
f7ec5a41d630: Pull complete
6f318b7b4c32: Pull complete
65be07e2a755: Pull complete
d843bb564d1d: Pull complete
044f430d907f: Pull complete
Digest: sha256:bdc39f13da35be9a8e592f8f49d12a4552ffd3e90b1fb866f7ab628f3197609d
Status: Downloaded newer image for python:3.8-slim
docker.io/library/python:3.8-slim
> docker image ls
REPOSITORY   TAG        IMAGE ID       CREATED       SIZE
python       3.8-slim   b281745b6df9   2 weeks ago   114MB
> 

[container]コマンド

[ls]

> docker container ls -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[run]コンテナを対話型モードで起動

> docker container run -it --rm python:3.8-slim /bin/bash
root@fddadfb47b1c:/#
root@fddadfb47b1c:/# uname -a
Linux fddadfb47b1c 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 GNU/Linux
root@fddadfb47b1c:/#


root@fddadfb47b1c:/# python
Python 3.8.9 (default, Apr 10 2021, 15:55:09) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version
'3.8.9 (default, Apr 10 2021, 15:55:09) \n[GCC 8.3.0]'
>>> exit()
root@fddadfb47b1c:/# exit
exit
> 
  • run関連

| オプション | 説明 |
| –name | コンテナ に 名前 を 付ける |
| -it | 対話 型 モード で 起動 |
| -d | バックグラウンド モード で 起動 |
| -p | ホスト に 公開 する ポート の 指定 |
| –mount | フォルダ の マウント |
| –rm | 終了 時 に コンテナ を 削除 |

[run]バックグラウンドモードで起動

> docker run --name prj1_websv -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
f7ec5a41d630: Already exists
aa1efa14b3bf: Pull complete
b78b95af9b17: Pull complete
c7d6bca2b8dc: Pull complete
cf16cd8e71e0: Pull complete
0241c68333ef: Pull complete
Digest: sha256:75a55d33ecc73c2a242450a9f1cc858499d468f077ea942867e662c247b5e412
Status: Downloaded newer image for nginx:latest
7844eab1bd8f21b773b23d23ad802e2eab998bd590db87d5953d1275bafa9225
> 
> docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
7844eab1bd8f   nginx     "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp   prj1_websv
> 

=>ブラウザで
http://localhost:8080/
にアクセス

[stop]コンテナの停止

> docker container stop prj1_websv
prj1_websv
> docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                      PORTS     NAMES
7844eab1bd8f   nginx     "/docker-entrypoint.…"   5 minutes ago   Exited (0) 12 seconds ago             prj1_websv
> 

[create, start]コンテナの起動

> docker container create -it --rm --name python1 python:3.8-slim /bin/bash
e1bff3f971fab32857cb147d41c075f5fdc256025fdaa4032cd6532564ce15a8
> docker container ls -a
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                     PORTS     NAMES
e1bff3f971fa   python:3.8-slim   "/bin/bash"              25 seconds ago   Created                              python1
b0b6d4de9c8d   python:3.8-slim   "/bin/bash"              3 minutes ago    Created                              exciting_moser
7844eab1bd8f   nginx             "/docker-entrypoint.…"   12 minutes ago   Exited (0) 7 minutes ago             prj1_websv
> docker start -ia python1
root@e1bff3f971fa:/# python
Python 3.8.9 (default, Apr 10 2021, 15:55:09) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version
'3.8.9 (default, Apr 10 2021, 15:55:09) \n[GCC 8.3.0]'
>>> exit()
root@e1bff3f971fa:/# exit
exit
> 

[restart]コンテナの再起動

> docker container restart prj1_websv
prj1_websv
> docker container ls -a
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS         PORTS                  NAMES
b0b6d4de9c8d   python:3.8-slim   "/bin/bash"              10 minutes ago   Created                               exciting_moser
7844eab1bd8f   nginx             "/docker-entrypoint.…"   19 minutes ago   Up 6 seconds   0.0.0.0:8080->80/tcp   prj1_websv
> 

[attach/exec]コンテナへの接続

docker container exec -it prj1_websv /bin/bash

[stop->rm]コンテナの削除

> docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                  NAMES
7844eab1bd8f   nginx     "/docker-entrypoint.…"   27 minutes ago   Up 8 minutes   0.0.0.0:8080->80/tcp   prj1_websv
> docker container stop prj1_websv    
prj1_websv
> docker container rm prj1_websv  
prj1_websv
> docker container ls -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
> 

[rm -f]コンテナの強制削除

docker image rm -f コンテナ ID

[prune] 停止状態のコンテナを一括削除

docker container prune [オプション]

docker container prune -f