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)のソフトウェアをインストール、更新(アップデート)、アンインストールなどの管理をするためのコマンド