Contents
概要
使用頻度の高いDockerコマンドを記載します。
コンテナイメージ
docker search
入手可能なコンテナイメージを確認するにはdocker searchを使用します。下記の例ではキーワードとしてubuntuを指定しています。
myadmin@ubuntu:~$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14395 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 284 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 112 [OK]
neurodebian NeuroDebian provides neuroscience research s… 91 [OK]
open-liberty Open Liberty multi-architecture images based… 53 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 50
ubuntu-debootstrap DEPRECATED; use "ubuntu" instead 46 [OK]
ubuntu/mysql MySQL open source fast, stable, multi-thread… 34
ubuntu/apache2 Apache, a secure & extensible open-source HT… 32
ubuntu/prometheus Prometheus is a systems and service monitori… 27
kasmweb/ubuntu-bionic-desktop Ubuntu productivity desktop for Kasm Workspa… 27
ubuntu/squid Squid is a caching proxy for the Web. Long-t… 24
ubuntu/bind9 BIND 9 is a very flexible, full-featured DNS… 21
ubuntu/postgres PostgreSQL is an open source object-relation… 17
ubuntu/redis Redis, an open source key-value store. Long-… 10
ubuntu/grafana Grafana, a feature rich metrics dashboard & … 6
ubuntu/prometheus-alertmanager Alertmanager handles client alerts from Prom… 6
ubuntu/memcached Memcached, in-memory keyvalue store for smal… 5
ubuntu/telegraf Telegraf collects, processes, aggregates & w… 4
ubuntu/kafka Apache Kafka, a distributed event streaming … 4
ubuntu/zookeeper ZooKeeper maintains configuration informatio… 3
ubuntu/cortex Cortex provides storage for Prometheus. Long… 3
ubuntu/cassandra Cassandra, an open source NoSQL distributed … 2
bitnami/ubuntu-base-buildpack Ubuntu base compilation image 2 [OK]
ubuntu/loki Grafana Loki, a log aggregation system like … 0
docker images
ローカルに存在するコンテナイメージを表示するにはdocker images(docker image lsでも可)を使用します。Dockerのインストール直後は何も存在しません。
myadmin@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker pull
コンテナイメージをダウンロードするにはdocker pullを使用します。下記の例ではubuntuをダウンロードしています。タグが未指定の場合はlatestとなりますが、latestではイメージの管理が困難なためタグを付けるほうが良いでしょう。
myadmin@ubuntu:~$ docker pull ubuntu:22.04 myadmin@ubuntu:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 22.04 27941809078c 2 days ago 77.8MB
docker image inspect
コンテナイメージの詳細を確認するにはdocker image inspectを使用します。出力は省略しますが主にEnvやCmdが確認個所になると思います。
myadmin@ubuntu:~$ docker image inspect ubuntu:22.04
docker rmi
コンテナイメージを削除するにはdocker rmiを使用します。
myadmin@ubuntu:~$ docker rmi ubuntu:22.04 myadmin@ubuntu:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
コンテナの実行
docker run
コンテナを起動するにはdocker runを使用します。
コンテナ上のコマンドの出力結果を返す
この例は下記の動作となります。シンプルですがこれがコンテナの基本だと思います。補足として前述のようにコンテナイメージをダウンロードしなくてもdocker run実行時に対象のイメージが無ければダウンロードされます。
- ubuntu:22.04のコンテナイメージからコンテナを実行
- 実行したコンテナ上でechoコマンドを実行
- echoコマンドの出力結果が返却
- echoコマンドが終了
- echoコマンドの終了を以てコンテナが終了
- コンテナの終了を以てコンテナを削除(–rmオプション)
myadmin@ubuntu:~$ docker run --rm ubuntu:22.04 echo test
test
コンテナの起動と同時にコンテナのシェルに入る
-itオプションを付けてコマンド無しで実行するとコンテナのbashが起動してコンテナ内の操作ができます。
-itオプションは-i:--interactive, -t:--ttyであり、コンテナ内でインタラクティブに操作を行う場合は必須のオプションです。両方を指定しないとコンテナ内の操作ができません。exitとすると--rmオプションによりコンテナも削除されます。
この例ではコマンドを指定していませんが、これはubuntu:22.04のコンテナイメージがビルドされた時点(配布されている状態)でbashコマンドが起動するように指定されている為です。
myadmin@ubuntu:~$ docker run -it --rm ubuntu:22.04
root@0971cfe0523c:/#
コンテナの起動を維持する
前述までの内容ではbashが終了するとコンテナも終了しますが、-d:--detachedオプションを付与することでexitしてもコンテナの起動を維持できます(バックグラウンド)。-dオプションはコンテナをサービスとして公開する場合に必須のオプションとなりますが、起動するプロセス(コマンド)がフォアグラウンドで起動している必要があります。
この例ではbash(フォアグラウンドではない)を使用しているため-itオプションを併用しています。また、後述の手順用にコンテナに名前を付けています。名前を指定しない場合はDockerが適当に名前を付けます。
myadmin@ubuntu:~$ docker run -itd --name ubuntu-01 ubuntu:22.04
docker ps
コンテナを起動するにはdocker psを使用します。停止中のコンテナも含めて表示するには-aオプションを付けます。-dオプションが有効である場合はコンテナの起動と同時にコンテナのシェルに入れません。まずはdocker psでubuntu-01が起動していることを確認します。
myadmin@ubuntu:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ec5811fe75a ubuntu:20.04 "bash" 3 minutes ago Up 3 minutes ubuntu-01
docker exec
稼働中のコンテナ内でコマンドを実行するにはdocker execを使用します。docker execでubuntu-01のttyに接続します。
myadmin@ubuntu:~$ docker exec -it ubuntu-01 bash
docker stop
コンテナを停止するにはdocker stopを使用します。これは削除ではないためコンテナ内で変更した内容は保持されています。
myadmin@ubuntu:~$ docker stop ubuntu-01 myadmin@ubuntu:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 48aa8ef55008 ubuntu:22.04 "bash" 5 minutes ago Exited (137) 11 seconds ago ubuntu-01
docker start
コンテナを起動するにはdocker startを使用します。
myadmin@ubuntu:~$ docker start ubuntu-01