Dockerコマンドの基本を学ぶ

スポンサーリンク
Docker
スポンサーリンク

Dockerは食わず嫌いでしたが、昨今の流れをうけて勉強ました。社内のプロキシ地獄に陥りましたが、なんとかDockerの上にアプリを構築することができました。なくてはならないものだとは思いますが、プロキシって本当にやっかいですよね。これで挫折してしまう人は多いのではないでしょうか。私も挫折しかかりました。

 

まずはDockerの概念的なところから勉強しました。イメージすることって大事ですよね。

 

スポンサーリンク

Docker Hub/Dockerfile/イメージ/コンテナとコマンドのイメージ

まずはDocker用語とコマンドの対応表を作ってみました。これで理解が進んだ気がします。

 

ubuntuの取得から起動までを順番に行う

順番にコマンドを打っていきます。

ubuntu 18.04のイメージをDocker Hubから取得

docker pullDocker Hubよりubuntuのイメージをpullします。”ubuntu:18.04″はubuntuというイメージの18.04タグを指定する意味です。タグ名がない場合は最新のlatestがデフォルトで設定されます。

~/docker $ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
6abc03819f3e: Pull complete 
05731e63f211: Pull complete 
0bd67c50d6be: Pull complete 
Digest: sha256:f08638ec7ddc90065187e7eabdfac3c96e5ff0f6b2f1762cf31a4f49b53000a5
Status: Downloaded newer image for ubuntu:18.04

 

docker imagesで取得したイメージの一覧を見ることができます。

~/docker $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               7698f282e524        4 weeks ago         69.9MB

 

ubuntu 18.04のイメージをDockerfileから取得

Dokerfileを用いて、docker buildでもイメージを作成することができます。

Dockerfileにはubuntuの18.04バージョンのイメージを指定します。FROMではベース・イメージを指定します。今回はubuntuイメージの18.04バージョンをベース・イメージとしています。

~/docker $ cat Dockerfile 
FROM ubuntu:18.04

 

Docker buildでイメージを生成します。”-tdockerfile/ubuntu:dockerfile18.04″オプションでリポジトリ名”dockerfile/ubuntu”と、タグ名”ubuntu:dockerfile18.04″を指定しています。

~/docker $ docker build -t dockerfile/ubuntu:dockerfile18.04 .
Sending build context to Docker daemon  2.048kB
Step 1/1 : FROM ubuntu:18.04
 ---> 7698f282e524
Successfully built 7698f282e524
Successfully tagged dockerfile/ubuntu:dockerfile18.04
  • -t, –tag=[] ‘名前:タグ’ 形式で名前とオプションのタグを指定

 

docker imagesでイメージ一覧をチェックすると、pulldで生成したイメージは下のREOPSITORYが”ubuntu”、Dockerfileで生成したイメージは上の”dockerfile/ubuntu”になっています。大元はubuntuの18.04なのでIMAGE IDは同じ”7698f282e524″ですね。

~/docker $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dockerfile/ubuntu   dockerfile18.04     7698f282e524        4 weeks ago         69.9MB
ubuntu              18.04               7698f282e524        4 weeks ago         69.9MB

 

イメージからコンテナの作成

docker createでpullから生成したイメージからコンテナを作成します。

~/docker $ docker create -it --name ubuntu1804 ubuntu:18.04
69d0c633fa74809116d51089674896aa79fc86945faf9c5e2304e5650f991f75
  • -i, –interactive アタッチしていなくても STDIN を開き続ける
  • -t, –tty 疑似ターミナル (pseudo-TTY) を割り当て
  • –name=”” コンテナに名前を割り当て

 

docker psにてコンテナの一覧の表示。

~/docker $ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69d0c633fa74        ubuntu:18.04        "/bin/bash"         11 seconds ago      Created                                 ubuntu1804
  • -a, –all 全てのコンテナを表示 (デフォルトは実行中コンテナのみ表示)

 

次にDockerfileで生成したイメージからコンテナを作成します。”–name dockerfile_ubuntu1804″がコンテナ名で、”dockerfile/ubuntu:dockerfile18.04″はイメージ名+タグ名です。

~/docker $ docker create -it --name dockerfile_ubuntu1804 dockerfile/ubuntu:dockerfile18.04
950d1bff9627d4d46f1be14611a5aff265983912d859736b3978986d59c52911

 

Docker psにてコンテナの一覧の表示。上のCONTAINER IDが”8bc163cce752″が、Dockerfileから生成したイメージから作成したコンテナです。中身はともにubuntu:18.04なので上も下も一緒です。

~/docker $ docker ps -a
CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS              PORTS               NAMES
950d1bff9627        dockerfile/ubuntu:dockerfile18.04   "/bin/bash"         10 seconds ago      Created                                 dockerfile_ubuntu1804
69d0c633fa74        ubuntu:18.04                        "/bin/bash"         38 seconds ago      Created                                 ubuntu1804

 

コンテナの起動

docker startで、pullしたイメージ由来のコンテナを起動します。引数にコンテナID”69d0c633fa74″を指定していますが、コンテナ名の”docker start ubuntu1804″でも同じように起動できます。

~/docker $ docker start 69d0c633fa74
69d0c633fa74

 

起動すると、STATUSが”Up 3 seconds”となり、起動してからどれくらい経ったのかを確認できます。

~/docker $ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
69d0c633fa74        ubuntu:18.04        "/bin/bash"         2 minutes ago       Up 3 seconds                            ubuntu1804

 

次にDockerfile由来のコンテナを起動します。

~/docker $ docker start dockerfile_ubuntu1804
dockerfile_ubuntu1804

 

Dockerfile由来のコンテナは上、pulled由来のコンテナは下に表示されています。IMAGE IDは一緒ですが、CONTAINER IDは異なっています。

~/docker $ docker ps
CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS              PORTS               NAMES
950d1bff9627        dockerfile/ubuntu:dockerfile18.04   "/bin/bash"         6 minutes ago       Up 2 seconds                            dockerfile_ubuntu1804
69d0c633fa74        ubuntu:18.04                        "/bin/bash"         6 minutes ago       Up 19 seconds                           ubuntu1804

 

起動したubuntuに入る

コンテナ上でubuntu:18.04が起動している状態なので、このubuntu:18.04にbashで入ることができます。引数はコンテナ名”ubuntu1804″。@以下はコンテナIDになっています。

~/docker $ docker exec -it ubuntu1804 /bin/bash
root@69d0c633fa74:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@69d0c633fa74:/# exit
exit

 

CONTAINER IDでも入ることができます。

~/docker $ docker exec -it 69d0c633fa74 /bin/bash
root@69d0c633fa74:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@69d0c633fa74:/# exit
exit

 

イメージの取得からコンテナの起動まで一気に行う

イメージの取得(pull/Dockerfile)、コンテナの作成(create)、コンテナの起動(start)を別々に行ってきましたが、docker runを使うとこれらの作業を一気に行うことができます。コンテナ名を”run_ubuntu1804″として実行します。

~/docker $ docker run -it -d --name run_ubuntu1804 ubuntu:18.04
58eaa54983356453ec94bf505707eb8052bcf29c5648290e2dcb31fc1ba18f6b
  • -i, –interactive コンテナの STDIN にアタッチ
  • -t, –tty 疑似ターミナル (pseudo-TTY) を割り当て
  • -d, –detach コンテナをバックグラウンドで実行し、コンテナ ID を表示

 

コンテナは一番上に、”run_ubuntu1804″として作成され、起動されました。イメージはすでにあるのでスキップしています。

~/docker $ docker ps -a
CONTAINER ID        IMAGE                               COMMAND             CREATED              STATUS              PORTS               NAMES
58eaa5498335        ubuntu:18.04                        "/bin/bash"         About a minute ago   Up About a minute                       run_ubuntu1804
950d1bff9627        dockerfile/ubuntu:dockerfile18.04   "/bin/bash"         3 hours ago          Up 3 hours                              dockerfile_ubuntu1804
69d0c633fa74        ubuntu:18.04                        "/bin/bash"         3 hours ago          Up 3 hours                              ubuntu1804

 

bashで入ることができます。

~/docker $ docker exec -it run_ubuntu1804 /bin/bash
root@58eaa5498335:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@58eaa5498335:/# exit
exit

 

イメージ/コンテナの削除

全てのコンテナの停止。

~/docker $ docker stop $(docker ps -q)
61b37a2d141e

 

停止したコンテナはdocker container pruneで削除。

~/docker $ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
950d1bff9627d4d46f1be14611a5aff265983912d859736b3978986d59c52911
69d0c633fa74809116d51089674896aa79fc86945faf9c5e2304e5650f991f75

Total reclaimed space: 69B

イメージはdocker image pruneで削除。

~/docker $ docker image prune -a 
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: dockerfile/ubuntu:dockerfile18.04
untagged: ubuntu:18.04
untagged: ubuntu@sha256:f08638ec7ddc90065187e7eabdfac3c96e5ff0f6b2f1762cf31a4f49b53000a5
deleted: sha256:7698f282e5242af2b9d2291458d4e425c75b25b0008c1e058d66b717b4c06fa9
deleted: sha256:027b23fdf3957673017df55aa29d754121aee8a7ed5cc2898856f898e9220d2c
deleted: sha256:0dfbdc7dee936a74958b05bc62776d5310abb129cfde4302b7bcdf0392561496
deleted: sha256:02571d034293cb241c078d7ecbf7a84b83a5df2508f11a91de26ec38eb6122f1

Total reclaimed space: 69.86MB

 

 

コメント

タイトルとURLをコピーしました