Dockerコマンドの勉強メモ


序文

プロジェクトの開発方法を学んだ後、プロジェクトの開発方法を知っているだけでは Java プログラマーとして認定されるわけではなく、プロジェクトをサーバーにデプロイする方法も学ぶ必要があることがわかりました。以前はプロジェクトを Linux 経由でサーバーにデプロイしていましたが、Linux のデプロイプロセスは docker に比べて煩雑だったので、より簡単な方法である docker を学習し、docker の学習プロセスをここに記録することにしました。
学習教材:狂った神は言った Java_Docker
ソフトウェア: MobaXterm
ここに画像の説明を挿入します
ここに画像の説明を挿入します


ヒント: 以下はこの記事の本文です。以下のケースは参考です。

1. ドッカーとは何ですか?

Docker は、開発者がアプリケーションと依存関係をポータブル イメージにパッケージ化し、それを仮想化も可能な一般的な Linux または Windows オペレーティング システム マシンに公開できるオープン ソース アプリケーション コンテナ エンジンです。相互間のインターフェースを持たずに完全にサンドボックスメカニズムを使用しています。
出典: Docker_Baidu 百科事典: https://baike.baidu.com/item/Docker/13344470?fr=aladdin


2. 一般的な Docker コマンド

1.ヘルプコマンド

docker version       # 显示docker的版本信息
docker info          # 显示docker的系统信息,包括镜像和容器数量
docker 命令 --help   # 帮助命令

Docker ヘルプ ドキュメントのアドレス: https://docs.docker.com/engine/reference/commandline/docker/

2. ミラーリングコマンド


ドッカーイメージ

docker images # 查看本机上的所有镜像

ここに画像の説明を挿入します

[root@VM-16-16-centos /]# docker images
REPOSITORY                  TAG          IMAGE ID       CREATED         SIZE
redis                       latest       5d89766432d0   6 weeks ago     105MB
nginx                       latest       f8f4ffc8092c   6 weeks ago     133MB
mysql                       latest       2fe463762680   6 weeks ago     514MB
rabbitmq                    management   2121b269a508   6 weeks ago     253MB
hello-world                 latest       feb5d9fea6a5   6 weeks ago     13.3kB
elasticsearch               7.9.2        caa7a21ca06e   13 months ago   763MB
daocloud.io/library/mysql   8.0.13       102816b1ee7d   2 years ago     486MB


# 解释
REPOSITORY    仓库的镜像源
TAG           镜像的标签,显示镜像的版本信息
IMAGE ID      镜像ID
CREATED       镜像的创建时间
SIZE          镜像的大小

# 可选项
Options:
  -a, --all             # 显示所有的镜像
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           # 只显示镜像的ID


ドッカー検索

docker search   # 搜索镜像

ここに画像の説明を挿入します

[root@VM-16-16-centos /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11665     [OK]
mariadb                           MariaDB Server is a high performing open sou…   4444      [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   867                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   561       [OK]
phpmyadmin                        phpMyAdmin - A web interface for MySQL and M…   366       [OK]


# 可选项,通过收藏数来进行过滤
Options:
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output

--filter=STARS=3000  # 搜索出来的镜像就是STARS数量大于3000的镜像

docker search mysql --filter STARS=3000コマンド実行結果
ここに画像の説明を挿入します
今回検索したミラーSTARSの数は3000以上


ドッカープル

docker pull  # 拉取镜像  =>  docker pull 镜像名[:tag]

ここに画像の説明を挿入します

[root@VM-16-16-centos /]# docker pull mysql
Using default tag: latest           # 如果下载时不指定tar版本,默认就是latest最新版本
latest: Pulling from library/mysql
b380bbd43752: Pull complete         #  分层下载,docker image的核心,联合文件系统
f23cbf2ecc5d: Pull complete
30cfc6c29c0a: Pull complete
b38609286cbe: Pull complete
8211d9e66cd6: Pull complete
2313f9eeca4a: Pull complete
7eb487d00da0: Pull complete
4d7421c8152e: Pull complete
77f3d8811a28: Pull complete
cce755338cba: Pull complete
69b753046b9f: Pull complete
b2e64b0ab53c: Pull complete
Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87  #  签名信息
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest  # 真实地址

# 等价于
docker pull mysql
docker pull docker.io/library/mysql:latest

# 指定版本下载
docker pull mysql:5.7

指定されたバージョンの docker をダウンロードする
ここに画像の説明を挿入します


ドッカーrmi

docker rmi 镜像Id # 删除指定镜像

ここに画像の説明を挿入します
画像を一括削除する

方法 1

docker rmi -f $(docker images -aq)  # 删除所有镜像

方法 2:

docker rmi -f 镜像Id1 镜像Id2 镜像Id3...   # 以空格作为分隔符

ここに画像の説明を挿入します
削除プロセス中に、イメージのコンテナーが実行中のため削除できないエラーが発生する場合があります。イメージを削除する場合は、まずコンテナーを閉じてコマンドを実行する必要がありますdocker stop 容器Id

3. コンテナコマンド

コンテナはイメージでのみ作成できます

ここでは Mad God に従って、CentOS システムを例として取り上げます。

docker pull centos   # 拉取最新的centos镜像

最新バージョンの centos イメージをプルします。これは、サーバー上で centos システムを実行するのと同等です。
ここに画像の説明を挿入します


コンテナ起動コマンド

docker run [可选参数] 容器名称

# 可选参数
--name="Name"   # 容器名称 例如:tomcat01 tomcat02,用来区分容器
-d              # 以后台方式运行容器
-it             # 使用交互方式运行容器,进入容器查看内容
-p              # 指定容器的端口,例如 -p 8080:8080
-P              # 随机指定容器端口

# -p常用命令
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (最常用)
-p 容器端口
容器端口

ここに画像の説明を挿入します

[root@VM-16-16-centos /]# docker run -it centos /bin/bash    启动并进入容器
[root@d59c91417c86 /]# ls         查看容器内的内容
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@d59c91417c86 /]# exit       退出容器,从容器中退回到主机
exit
[root@VM-16-16-centos /]# ls      查看容器外的内容
bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

コンテナ終了コマンド

exit   # 从容器中退出到主机的命令

このコマンドはコンテナを直接終了しますが、終了時にコンテナを閉じて停止します。コンテナを停止せずに終了したい場合は、 を押してCtrl + P + Qコンテナを停止せずにコンテナを終了します。
ここに画像の説明を挿入します


コンテナコマンドの表示

docker ps  # 查看当前正在运行的容器
-a      # 查看当前正在运行的容器+带出历史运行过的容器
-n=?    # 显示最近创建的容器
-q      # 只显示容器的编号

ここに画像の説明を挿入します


コンテナ削除コマンド

docker rm 容器Id                # 删除指定容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq)  # 删除所有的容器

ここに画像の説明を挿入します


コンテナ開始コマンド

docker start 容器Id       # 启动容器
docker restart 容器Id     # 重启容器

コンテナ停止コマンド

docker stop 容器Id     # 停止当前正在运行的容器
docker kill 容器Id     # 强制停止当前正在运行的容器

3. Docker がよく使用する高度なコマンド

1. コンテナコマンド


バックグラウンドでコンテナを起動する

docker run -d 镜像名称   # 后台启动容器

問題: centos がバックグラウンドで起動されると、コンテナが自動的に停止したことがわかります
ここに画像の説明を挿入します
理由: Docker コンテナにはバックグラウンドで実行するフォアグラウンド プロセスが必要ですDocker が起動され、サービスを提供していないことが判明すると、自動的に停止します停止。


ログ表示コマンド

docker logs [可选参数] [容器Id]  # 查看指定容器的日志

# 可选项
  -f, --follow         # 只输出指定的日志
  -n, --tail string    # 输出的日志条数,使用-n或--tail命令时必须加行数
  -t, --timestamps     # 输出的日志前有时间信息

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します


実行中のコンテナに入る

方法 1 :

docker exec -it 容器Id bashShell  # 以交互模式进入当前正在运行的容器

# 测试
# 查看当前正在运行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
8b58f0b6cfb0   centos    "/bin/bash"   20 minutes ago   Up 20 minutes             laughing_nash
# 进入到指定容器的/bin/bash目录下
[root@VM-16-16-centos ~]# docker exec -it 8b58f0b6cfb0 /bin/bash
# 成功的进入了指定目录
[root@8b58f0b6cfb0 /]#

方法 2:

docker attach 容器Id

# 测试
# 查看当前正在运行的容器
[root@VM-16-16-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
8b58f0b6cfb0   centos    "/bin/bash"   27 minutes ago   Up 27 minutes             laughing_nash
# 进入到指定的容器
[root@VM-16-16-centos ~]# docker attach 8b58f0b6cfb0
# 成功的进入了指定容器内部
[root@8b58f0b6cfb0 /]#

2 つの方法の違いは次のとおりです。

  1. docker exec :コンテナーに入った後、新しいターミナルを開き、その中で操作できます (一般的に使用されます)
  2. dockerattach :コンテナが実行されているターミナルに入ります。新しいプロセスは開始されません。

コンテナープロセスコマンドの表示

コンテナのプロセス情報を参照する場合、参照するコンテナは実行中のコンテナである必要があります。

docker top 容器Id

[root@VM-16-16-centos ~]# docker ps  # 查看当前正在运行的容器
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
8b58f0b6cfb0   centos    "/bin/bash"   10 seconds ago   Up 10 seconds             laughing_nash
[root@VM-16-16-centos ~]# docker top 8b58f0b6cfb0   # 查看指定容器的进程信息
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1453522             1453502             0                   19:35               pts/0               00:00:00            /bin/bash

コンテナ内のファイルをホストにコピーする

docker cp 容器Id:容器内容路径 目的的主机路径

ここに画像の説明を挿入します


2. ミラーリングコマンド

画像メタデータの表示

docker inspect 容器Id

ここに画像の説明を挿入します


要約する

以上が docker の基本的なイメージコマンドとコンテナコマンドです。 docker には他にもたくさんのコマンドがあります。 docker をしっかり学びたいなら、コマンドを使い続けることで理解して覚えるしかありません。 それ以外に近道はありません。
強くなることが唯一の選択肢になったとき、自分がどれほど強くなれるかがわかります。頑張れないときは、もう一度頑張れと自分に言い聞かせることを忘れないでください。1000回考えるなら、1回やったほうがいいですよ!
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_48455576/article/details/121245138