手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Docker 基本的な使い方

目次に戻る

概要

使用頻度の高い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実行時に対象のイメージが無ければダウンロードされます。

  1. ubuntu:22.04のコンテナイメージからコンテナを実行
  2. 実行したコンテナ上でechoコマンドを実行
  3. echoコマンドの出力結果が返却
  4. echoコマンドが終了
  5. echoコマンドの終了を以てコンテナが終了
  6. コンテナの終了を以てコンテナを削除(–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

目次に戻る

Ubuntu 22.04 Docker 基本的な使い方

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る