ubuntu20にDockerをインストールして使用する

Dockerは、コンテナー内のアプリケーションプロセスを管理するプロセスを簡素化するアプリケーションです。コンテナを使用すると、リソースが分離されたプロセスでアプリケーションを実行できます。これらは仮想マシンに似ていますが、コンテナーは移植が容易で、使用するリソースが少なく、ホストシステムのリソースへの依存度が高くなります。

この記事では、Docker Community Edition(CE)がUbuntu20.04にインストールされて使用されます。コンテナとイメージを同時に使用し、最後にイメージをDockerリポジトリにプッシュします。

この記事では、sudoグループ権限を持つユーザーアカウントを持っているが、rootは持っていないことを前提としています。

そうでない場合は、ルートの下に作成します 

adduser sammy

usermod -aG sudo sammy

これにより、sudo権限を持つユーザーが作成されます

1:Dockerをインストールします

まず、すべてのインストールパッケージを更新します。

sudo apt update

次に、HTTPS経由でパッケージを使用するためのいくつかの前提条件パッケージをインストールします
。sudoaptinstall apt-transport-https ca-certificates curl software-properties-common

公式DockerリポジトリのGPGキーをシステムに追加します:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add-

DockerリポジトリをAPTソースに追加します:
sudo add-apt-repository "deb [arch = amd64] https://download.docker.com/linux/ubuntu focusstable"

新しく追加されたウェアハウスのDockerパッケージでパッケージデータベースを更新します:
sudo apt update

デフォルトのUbuntuリポジトリではなくDockerリポジトリからインストールすることを確認してください:
apt-cache policy docker-ce

最後に、dockerが実際にインストールされます

sudo apt install docker-ce

これでdockerがインストールされ、デーモンが開始され、次にシステムが有効になったときにプロセスが開始されます。実行されているかどうかを確認します。

sudo systemctl status docker

見られます:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-02-20 18:05:52 UTC; 5min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 11985 (dockerd)
      Tasks: 8
     Memory: 39.4M
     CGroup: /system.slice/docker.service
             └─11985 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...


 

2:sudoを使用せずにDockerコマンドを実行する

デフォルトでは、dockerコマンドはrootユーザーまたはdockerグループのユーザーとしてのみ実行でき、dockerグループはDockerのインストールプロセス中に自動的に作成されます。sudoプレフィックスを使用しないようにするには、docckerグループに参加する必要があります。

sudo usermod -aG docker $ {USER}
を有効にするには、このグループ情報にログアウトしてからログインする必要があります。またはこれも問題ありません。ログアウトしてからログインしました。以下の方法は試していません。
su- $ {USER}

現在のグループを確認するコマンドは
次のとおりです。id-nG

次の情報が表示されます

sammy sudo docker

dockerグループに誰かを追加する場合は、次のコマンドを使用します。ここで、usernameは他の誰かのユーザー名です
。sudousermod-aG docker username

この記事の後半で使用されるdockerコマンドは、dockerグループに属していることを前提としています。そうでない場合はsudoです。
 

3:Dockerコマンドを使用する

dockerを使用するには、一連のオプションとコマンドを渡し、その後にパラメーターを渡す必要があります。文法は次の形式を取ります。

docker [オプション] [コマンド] [引数]

使用可能なすべてのサブコマンドを表示するには、次のように入力します:
docker

特定のコマンドで使用できるオプションを確認するには、次のように入力します
。dockerdocker-subcommand --help

Dockerシステム情報を表示するための次のコマンド: 
docker info

4:Dockerイメージ

Dockerコンテナーは、Dockerイメージから構築されます。デフォルトでは、Dockerは、Dockerプロジェクトの背後にある会社であるDockerによって管理されるDockerレジストリであるDockerHubからこれらのイメージをプルします。誰でもDockerHubでDockerイメージをホストできるため、必要なアプリケーションとLinuxディストリビューションのほとんどがイメージをホストします。

簡単なhello-worldをテストしてみましょう。

docker run hello-world

次のような情報が表示されます。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Dockerは当初hello-worldイメージをローカルで見つけることができなかったため、デフォルトのリポジトリであるDockerHubからイメージをダウンロードしました。イメージをダウンロードした後、Dockerはイメージに基づいてコンテナーを作成し、コンテナー内でアプリケーションを実行して、メッセージを表示します。

dockerコマンドとsearchサブコマンドを使用して、DockerHubで利用可能なイメージを検索できます。たとえば、Ubuntuイメージを検索するには、次のように入力します。

docker search ubuntu

[公式]列の[OK]は、プロジェクトの背後にある会社によって作成およびサポートされているイメージを表します。使用するイメージを決定したら、pullサブコマンドを使用してイメージをコンピューターにダウンロードできます。

次のコマンドを実行して、公式のubuntuイメージをローカルにダウンロードします。

docker pull ubuntu

イメージをダウンロードした後、ダウンロードしたイメージをrunサブコマンドで使用して、コンテナーを実行できます。hello-worldの例に見られるように、runサブコマンドを使用してdockerを実行するときにイメージがダウンロードされない場合、Dockerクライアントは最初にイメージをダウンロードし、次にイメージを使用してコンテナーを実行します。

コンピューターにダウンロードされたイメージを表示するには、次のように入力します。

Docker画像

表示情報は以下のとおりです。

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    f63181f19b2f   4 weeks ago     72.9MB
hello-world   latest    bf756fb1ae65   13 months ago   13.3kB

5: Docker 容器

前の手順で実行されているhello-worldコンテナーは、テストメッセージの発行後に実行および終了するコンテナーの例です。コンテナはこれよりもはるかに便利で、インタラクティブにすることができます。結局のところ、これらは仮想マシンに似ていますが、よりリソースに優しいものです。

たとえば、Ubuntuの最新のイメージを使用してコンテナーを実行してみましょう。-iスイッチと-tスイッチの組み合わせにより、シェルにインタラクティブにアクセスできます。

docker run -it ubuntu

次に、次の表示があり、コンテナのubuntuを入力します 

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker run -it ubuntu

root@bd612e776819:/#

最初にパッケージリストを更新します。

root@bd612e776819:/# apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]

たとえば、nodejsをインストールします

root@bd612e776819:/# apt install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:

 次に、ノードのバージョンを確認します。

root@bd612e776819:/# node -v
v10.19.0

すべての操作はこのコンテナ専用です。

終了するには、次のように入力します。

出口

root@bd612e776819:/# exit
exit
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$

6:Dockerコンテナを管理する

Dockerをしばらく使用すると、コンピューター上にアクティブな(実行中の)コンテナーと非アクティブなコンテナーが多数存在します。アクティビティを表示するには、次を使用します。

docker ps

ここではアクティビティがないため、次のように表示されます。

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

すべてのコンテナーを表示するには、次のようにします
。dockerps -a

表示は次のようになります。

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED             STATUS                         PORTS     NAMES
bd612e776819   ubuntu        "/bin/bash"   53 minutes ago      Exited (0) 22 minutes ago                gallant_visvesvaraya
bdbf06b1c3bc   hello-world   "/hello"      About an hour ago   Exited (0) About an hour ago             nifty_benz

最近作成されたコンテナを表示するには、-l
docker ps-lを使用します

停止したコンテナーを開始するには、docker startを使用してから、コンテナーIDまたはコンテナーの名前を使用します。IDbdbf06b1c3bcでUbuntuベースのコンテナを起動しましょう:docker
start bdbf06b1c3bc

このIDは異なります。これは、docker ps -aビューで確認できます。以下は起動後のものであり、dockerpsを使用して表示します。

 docker start bd612e776819
bd612e776819
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED             STATUS         PORTS     NAMES
bd612e776819   ubuntu    "/bin/bash"   About an hour ago   Up 7 seconds             gallant_visvesvaraya

実行中のコンテナーを停止するには、dockerstopの後にコンテナーIDまたは名前を使用します。今回は、Dockerによって割り当てられたコンテナ名gallant_visvesvarayaを使用します。

docker stop gallant_visvesvaraya

コンテナーが不要になったことを確認したら、docker rmコマンドを使用して、コンテナーIDまたは名前を使用してコンテナーを再度削除します。docker ps -aコマンドを使用して、hello-worldイメージに関連付けられているコンテナーIDまたはコンテナーの名前を見つけて削除します。

docker rm nifty_benz

以下は、最初にps -aでチェックし、rmの後でチェックするプロセスです。nifty_benzはpsが見る名前で、それぞれが異なります。

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED       STATUS                          PORTS     NAMES
bd612e776819   ubuntu        "/bin/bash"   6 hours ago   Exited (0) About a minute ago             gallant_visvesvaraya
bdbf06b1c3bc   hello-world   "/hello"      6 hours ago   Exited (0) 5 hours ago                    nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker rm nifty_benz
nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS                     PORTS     NAMES
bd612e776819   ubuntu    "/bin/bash"   6 hours ago   Exited (0) 2 minutes ago             gallant_visvesvaraya
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$

新しいコンテナを開始し、-nameスイッチを使用して名前を付けることができます。--rmスイッチを使用してコンテナを作成することもできます。コンテナは停止すると削除されます。これらおよびその他のオプションの詳細については、docker runhelpコマンドを参照してください。

コンテナはイメージに変換でき、新しいコンテナを構築するために使用できます。それがどのように機能するか見てみましょう。

7:コンテナへの変更をコミットします

Dockerイメージを起動すると、仮想マシンを使用するのと同じように、ファイルを作成、変更、および削除できます。加えられた変更は、そのコンテナにのみ適用されます。開始および停止できますが、docker rmコマンドで破棄すると、変更は永久に失われます。

このセクションでは、コンテナの状態を新しいDockerイメージとして保存する方法について説明します。

Node.jsをUbuntuコンテナーにインストールすると、イメージを実行するためのコンテナーが作成されますが、コンテナーは作成に使用されたイメージとは異なります。ただし、将来的には、このNode.jsコンテナーを新しいイメージのベースとして再利用することをお勧めします。

次に、次のコマンドを使用して、新しいDockerイメージインスタンスへの変更をコミットします。

docker commit -m "イメージに対して行ったこと" -a "作成者名" container_id repository / new_image_name

-mスイッチはメッセージを送信するために使用され、あなたや他の人があなたが行った変更を知るのに役立ちます。-aは作成者を指定するために使用されます。container_idは、このチュートリアルの前半でインタラクティブなDockerセッションを開始したときにメモしたものです。Docker Hubで別のリポジトリが作成されない限り、リポジトリは通常DockerHubのユーザー名です。

たとえば、sammyユーザーで、コンテナーIDがd9b100f2f636の場合、コマンドは次のようになります。

docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy / ubuntu-nodejs

画像が送信されると、新しい画像がローカルコンピュータに保存されます。このチュートリアルの後半では、他のユーザーがアクセスできるように、DockerHubなどのDockerリポジトリにイメージをプッシュする方法を学習します。

Dockerイメージを再度リストすると、古いイメージだけでなく、新しいイメージも表示されます。

Docker画像

操作プロセスは次のとおりです。

leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker commit -m "added Node.js" -a "leon" bd612e776819 leon/ubuntu-nodejs
sha256:e5120a19cee69adfa4ea83f9e97934aa0ba33624ce4230b92a999c4cb4d2f75d
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker images
REPOSITORY           TAG       IMAGE ID       CREATED              SIZE
leon/ubuntu-nodejs   latest    e5120a19cee6   About a minute ago   167MB
ubuntu               latest    f63181f19b2f   4 weeks ago          72.9MB
hello-world          latest    bf756fb1ae65   13 months ago        13.3kB
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$

8:DockerイメージをDockerリポジトリにプッシュする

既存のイメージから新しいイメージを作成したら、次のステップは、そのイメージを友人、Docker Hub上の全世界、またはアクセス可能な他のDockerライブラリと共有することです。イメージをDockerHubまたはその他のDockerレジストリにプッシュするには、そのイメージにアカウントが必要です。

最初のステップは、アカウントにログインすることです。

docker login -u docker-registry-username

ユーザー名とログインアカウントに一貫性がない場合:

docker tag sammy / ubuntu-nodejs docker-registry-username / ubuntu-nodejs

次にプッシュします。

docker push docker-registry-username / docker-image-name
ユーザー名がsammyで、イメージがubuntu-nodejsの場合は、次のコマンドを使用します。

docker push sammy / ubuntu-nodejs

9:CcontainerとImagesのいくつかのコマンド

すべてのコンテナIDを一覧表示します

docker ps -aq

すべてのコンテナを停止します

docker stop $(docker ps -aq)

すべてのコンテナを削除します

docker rm $(docker ps -aq)

すべてのミラーを削除します
dockerrmi $(docker images -q)

この記事は、Ubuntu20.04にDockerをインストールして使用する方法を学習することで完了し ます 。

紹介は以上です。

おすすめ

転載: blog.csdn.net/leon_zeng0/article/details/113881191