Docker 基本:Dockerfile、コマンド、オプション、OS(Ubuntu)など

Docker

・docker engine:docker client と docker デーモンを組み合わせたもの

・Dockerfile をもとにイメージを作成する

・build:イメージを作成すること

$ docker image build -t hello:latest .

* -t        => タグ付け を意味する。あとで呼び出すときに楽になる。
* 「:latest」 => 最新ver を読み込むよう指示
* 「.」       => 末尾のドットは、「今いる(カレント)ディレクトリのDockerfile を読み込んでね」って意味

$ docker image buildコマンドは、Dockerfile があるディレクトリで実行する

-t オプション -> 「名前空間/イメージ名:タグ名」

・イメージ名が他と被るとエラーになる。一意にするために「名前空間」をつける
  ・名前空間:プロジェクト名 or レジストリのホスト名 を使うことが多い
・タグ名:ver を書くことが多い。「:latest」は「最新」という意味

-f オプション:ファイル名を指定する場合に使う

$ docker image build -f Dockerfile-test .
Dockerfile 以外のファイル名を使う場合に使うオプション

Dockerfile の中身

FROM unbuntu:21.10

RUN apt update \ #ライブラリを最新化している
  && apt install -y apache2

CMD ["apachectl", "-D", "FOREGROUND"]; # apache を起動させる

FROM unbuntu:21.10 FROM で、OS を指定する
Run:実行するコマンドを指定する
 ・RUN apt updateパッケージ(ライブラリ)の管理をする
・「 \ 」:複数行を書くときに使う
・「 && 」:他のコマンドを書くときに使う
apt install -y apache2:apache2 をインストールする
 ・-y:全ての問いに「yes」と自動で回答させるためのオプション。スクリプトで自動化したい場合によく使う。

CMD:コンテナ実行時に、実行させてつづけたいコマンドを書く


$ docker container run <イメージ名>:<タグ名>

runコマンドは、コンテナの生成・起動を一度にするコマンド。

オプション

$ docker container run [オプション] <イメージ>:latest

  • -d (detach)

バックグラウンドで、コンテナ実行するコマンド。
これをしないと、ターミナルで実行されて、そのターミナルが使えなくなる。

  • --name

コンテナに名前をつける。

$ docker container run --name myapache myapache:latest
とすると、その後に、myapache:latestを呼び出す際に、myapacheでOKになる。

まとめとして、例のコマンドは、以下のようになる。

$ docker container run -d --name apache practice/apache:latest

数字の羅列が出力される。それが、ID になる。 また、--name で指定した名前は、一意のため、同じPCで同じ名前のコンテナを作成しようとすると、エラーがでる。

コンテナの起動確認 コマンド

$ docker container ls

上記のコマンド、起動中のコンテナを確認できる。 また、停止中のコンテナも確認したい場合は、以下のオプションを足す。

$ docker container ls -a

ブラウザから、コンテナにアクセスする

コンテナのポート番号を外部に公開する。
コンテナのポート番号とホスト(今あなたが使っているPC)のポート番号をマッピングさせて、ブラウザからコンテナにアクセスできるようにするコマンド。

ホストが他に使っていないポート番号なら、何番でもよい。ただ、大体「8080」を使われることが多い。

$ docker container run -d --name apache -p 8080:80 practice/apache:latest
ログの確認コマンド

$ docker container logs <コンテナ名>

例、$ docker container logs apache

コンテナでコマンドを実行:-it オプション

$ docker container exec -it apache /bin/bash

-itオプションを使うと、シェルを起動させ続けて、コンテナを操作できるようになる。

シェルは、起動させると、即時に終了する。そのため、シェルを起動させ続けるためのオプションが、-itになる。

コンテナを表示するコマンド
# 起動中のコンテナのみ表示する
$ docker ps

# 起動中のコンテナのIDを表示する
$ docker ps -q

# 全てのコンテナのIDを表示する
$ docker ps -a -q

# 全てのコンテナを表示する
$ docker ps -a

CONTAINER ID   IMAGE                     COMMAND
8779bb768885   part3-app                 "docker-php-entrypoi…"
f1c4f526613f   part7-db                  "/entrypoint.sh mysq…"
6147c081aaf7   practice/apache2:latest   "apachectl -DFOREGRO…"

CREATED        STATUS 
2 weeks ago    Up About an hour 
2 weeks ago    Exited (255) About an hour ago
3 weeks ago    Exited (255) 3 weeks ago

PORTS                                      NAMES
0.0.0.0:50080->80/tcp                      part3-app-1
33060-33061/tcp, 0.0.0.0:53306->3306/tcp   part7-db-1
0.0.0.0:8080->80/tcp                       apache2
コンテナを停止のみするコマンド
$ docker stop [コンテナID or コンテナ名]
全てを削除する

使用していないものを全て削除するコマンド

$ docker system prune

基本的には、実行しない。本当に、容量を空けたくて諸々を削除する時のみ使うコマンド。


用語

ディストリビューションLinux ディストリビューションのこと。
 ・カーネルという中核部分以外の必要な色々なソフトも、含めたLinux のこと。
 ・語源:アプリケーションソフトなどを簡単にインストールできるようにまとめたファイルが「ディストリビューションパッケージ」と呼ばれていた。

カーネルオペレーティングシステム(OS)の基本機能の役割を担うソフトウェア。 カーネルは、OSの中で、中核的なプログラムであり、ハードディスクやメモリなど、コンピュータの資源管理を行なっている。 カーネルは、アプリケーションの実行を許可し、プロセス管理を行います。

参考サイト:

apt コマンドとはUbuntu (OS)のソフトウェアをインストール、更新(アップデート)、アンインストールなどの管理をするためのコマンド

-y オプション

カーネルとは