Docker——Docker常用命令+部署一些基本服务(NginxTomcatelasticsearch)

Posted Pakho`

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker——Docker常用命令+部署一些基本服务(NginxTomcatelasticsearch)相关的知识,希望对你有一定的参考价值。

Docker基本命令

帮助命令

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

官方帮助文档地址

镜像命令

  • docker images 查看当前本地主机上的所有镜像
  • 也可通过docker images --help查看
OptionsDescription(说明)
--all , -a显示所有镜像
--digests显示摘要
--filter , -f根据提供的条件过滤输出
--format使用Go模板打印漂亮的图像
--no-trunc不截断输出(输出配置)
--quiet , -q仅显示镜像ID
[root@docker /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   3 months ago   13.3kB

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

#可选项
-a, --all             #列出所有镜像
-q, --quiet           #只显示镜像ID

[root@docker /]# docker images -a
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   3 months ago   13.3kB

[root@docker /]# docker images -q
d1165f221234

[root@docker /]# docker images -aq
d1165f221234
OptionsDescription(说明)
--filter , -f根据提供的条件过滤输出
--format使用Go模板的漂亮打印搜索
--limit最大搜索结果数
--no-trunc不截断输出
[root@docker /]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11023     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4177      [OK]       

#可选项,通过收藏过滤
--filter=STARS=3000 搜索出来的镜像就是STARS大于3000的

[root@docker /]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11023     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4177      [OK]
[root@docker /]# docker search mysql --filter=STARS=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   11023     [OK]
  • docker pull下载镜像
  • docker pull + 镜像名[:tag]
[root@docker /]# docker pull --help

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Pull an image or a repository from a registry

Options:
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)
      --platform string         Set platform if server is multi-platform capable
  -q, --quiet                   Suppress verbose output

[root@docker /]# docker pull mysql         #下载mysql,默认下载最新版
Using default tag: latest                  #如果不写版本信息,默认latest
latest: Pulling from library/mysql
69692152171a: Pull complete                #分层下载,docker image的核心,联合文件核心
1651b0be3df3: Pull complete 
951da7386bc8: Pull complete 
0f86c95aa242: Pull complete 
37ba2d8bd4fe: Pull complete 
6d278bb05e94: Pull complete 
497efbd93a3e: Pull complete 
f7fddf10c2c2: Pull complete 
16415d159dfb: Pull complete 
0e530ffc6b73: Pull complete 
b0a4a1a77178: Pull complete 
cd90f92aa9ef: Pull complete 
Digest: sha256:d50098d7fcb25b1fcb24e2d3247cae3fc55815d64fec640dc395840f8fa80969  #签名信息,防伪
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest                                                   #真实地址

#等价于它(真实地址)
docker pull mysql = docker.io/library/mysql:latest

#指定版本下载
[root@docker /]# docker pull mysql:5.7
5.7: Pulling from library/mysql
69692152171a: Already exists 
1651b0be3df3: Already exists 
951da7386bc8: Already exists 
0f86c95aa242: Already exists 
37ba2d8bd4fe: Already exists 
6d278bb05e94: Already exists 
497efbd93a3e: Already exists 
a023ae82eef5: Pull complete 
e76c35f20ee7: Pull complete 
e887524d2ef9: Pull complete 
ccb65627e1c3: Pull complete 
Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

[root@docker /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         5.7       2c9028880e58   5 weeks ago    447MB
mysql         latest    c0cdc95609f1   5 weeks ago    556MB
hello-world   latest    d1165f221234   3 months ago   13.3kB
  • docker rmi删除镜像
  • rm表示删除 i表示 images镜像 -f 全部删掉
#通过ID删除
[root@docker /]# docker rmi -f 2c9028880e58
Untagged: mysql:5.7
Untagged: mysql@sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Deleted: sha256:2c9028880e5814e8923c278d7e2059f9066d56608a21cd3f83a01e3337bacd68
Deleted: sha256:c49c5c776f1bc87cdfff451ef39ce16a1ef45829e10203f4d9a153a6889ec15e
Deleted: sha256:8345316eca77700e62470611446529113579712a787d356e5c8656a41c244aee
Deleted: sha256:8ae51b87111404bd3e3bde4115ea2fe3fd2bb2cf67158460423c361a24df156b
Deleted: sha256:9d5afda6f6dcf8dd59aef5c02099f1d3b3b0c9ae4f2bb7a61627613e8cdfe562

[root@docker /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    c0cdc95609f1   5 weeks ago    556MB
hello-world   latest    d1165f221234   3 months ago   13.3kB
  • docker rmi -f + 镜像id 删除指定镜像
  • docker rmi -f 镜像id + 镜像id + 镜像id + 镜像id删除多个镜像
#批量删除全部镜像
[root@docker /]# docker rmi -f $(docker images -aq) #将docker images 查找出的镜像作为参数,-aq 表示所有镜像ID
[root@docker /]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

容器命令

  • 说明:有了镜像,才可以创建容器,下载一个CentOS进行测试
[root@docker /]# docker pull centos
  • 新建容器并启动docker run
  • docker run [可选参数] image
OptionsDescription(说明)
--name="Name"容器名字
-d后台方式运行
-i -t使用交互方式运行,进入容器查看内容
-p指定容器的端口 -p 也可与主机映射 (如 -p 8080:8080) -p 主机端口:容器端口 - p 容器端口 -p ip 主机端口:容器端口
-P随机指定端口
#测试:启动并进入容器
[root@docker /]# docker run -it centos /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@e048b0721875 /]# ls                                       #查看容器内的centos,基础版本,很多命令是不完善的!
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@e048b0721875 /]# exit                                     #退出容器
exit
  • 列出所有运行中的容器docker ps
OptionsDescription(说明)
-a列出当前正在运行的容器+历史运行过的容器
-n=?显示最近创建的容器
-q只显示容器编号
[root@docker /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • 查看曾经运行过的容器docker ps -a
[root@docker /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED              STATUS                          PORTS     NAMES
1d6c09b319aa   centos         "/bin/bash"   About a minute ago   Exited (0) About a minute ago             beautiful_noyce
e048b0721875   centos         "/bin/bash"   5 minutes ago        Exited (0) 3 minutes ago                  hardcore_banach
f19d416c95a1   d1165f221234   "/hello"      9 hours ago          Exited (0) 9 hours ago                    epic_saha
#只显示一个容器
[root@docker /]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
1d6c09b319aa   centos    "/bin/bash"   4 minutes ago   Exited (0) 3 minutes ago             beautiful_noyce
#查看容器编号
[root@docker /]# docker ps -aq
1d6c09b319aa
e048b0721875
f19d416c95a1
  • 退出容器exit
    • Ctrl + P +Q 只退出不停止容器
[root@docker /]# docker run -it centos /bin/bash                  #运行容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@2aabcae91ba3 /]# [root@docker /]# docker ps                 #Ctrl+P+Q 后使用docker ps查看运行中的容器
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
2aabcae91ba3   centos    "/bin/bash"   16 seconds ago   Up 15 seconds             elastic_napier
  • 删除指定容器docker rm + 容器id
  • 删除所有容器docker rm -f $(docker ps -aq)
#移除一个镜像
[root@docker /]# docker rm 1d6c09b319aa
1d6c09b319aa
  • 不能删除一个正在运行的容器,如果要强制删除 rm -f
  • docker ps -a -q | xargs docker rm 删除所有的容器
#移除一个正在运行的容器
[root@docker /]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
2aabcae91ba3   centos    "/bin/bash"   8 minutes ago   Up 8 minutes             elastic_napier
[root@docker /]# docker rm 2aabcae91ba3
Error response from daemon: You cannot remove a running container 2aabcae91ba332879caf73fbf4e5b91997ef2dd8040e7c65a42678e57cd11777. Stop the container before attempting removal or force remove

[root@docker /]# docker rm -f $(docker ps -aq)
2aabcae91ba3
e048b0721875
f19d416c95a1
[root@docker /]# docker ps -aq
  • 启动和停止容器的操作
    • docker start 容器id 启动容器
    • docker restart 容器id重启容器
    • docker stop 容器id停止当前正在运行的容器
    • docker kill 容器id强制停止当前容器(杀死容器)
[root@docker /]# docker run -it centos /bin/bash        #启动centos容器
[root@e3013ab05f2e /]# exit                             #退出容器
exit
[root@docker /]# docker ps -a                           #查看历史启动容器
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
e3013ab05f2e   centos    "/bin/bash"   44 seconds ago   Exited (0) 29 seconds ago             charming_shamir
[root@docker /]# docker start e3013ab05f2e              #通过容器id启动容器
e3013ab05f2e
[root@docker /]# docker ps                              #查看docker正在运行centos容器
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS          PORTS     NAMES
e3013ab05f2e   centos    "/bin/bash"   2 minutes ago   Up 24 seconds             charming_shamir
[root@docker /]# docker stop e3013ab05f2e               #停止容器+id
e3013ab05f2e
[root@docker /]# docker ps                              #后台没有正在运行的容器
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Docker常用其他命令

  • 后台启动容器

一个需要注意的坑!!!

  • 通过docker run -d + 镜像名启动
    • 问题docker ps,发现centos停止了
    • 常见的坑,docker容器使用后台运行,必须有一个前台进程,docker发现没有应用,会自动停止
    • 容器启动后发现自己没有提供服务,就会立刻停止(自杀),自身感觉没有程序了
[root@docker /]# docker run -d centos                  #根据命令 -d 后台允许容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
d12b6c3f8550db886789bd9d694f73dbab8ab09eb8b5e74027678ad7a53baafa
[root@docker /]# docker ps                             #ps查看容器发现没有
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • 查看日志命令docker logs

docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1

OptionsDescription(说明)
--details详细信息
--follow , -f跟踪日志输出 -f:查看实时日志
--since显示自时间戳(例如2013-01-02T13:23:37Z)或相对时间戳(例如42分钟的42m)后的日志
--tail , -n从日志末尾显示的行数 --tail=10 查看最后的10条日志
--timestamps , -t显示时间戳 -t :查看日志产生日期
--until在时间戳(例如2013-01-02T13:23:37Z)或相对时间戳(例如42分钟42米)之前显示日志
--since此参数指定了输出日志开始日期,即只输出指定日期之后的日志
[root@docker /]# docker run -it centos /bin/bash         #启动一个容器
[root@ae2ec1ac1942 /]# [root@docker /]# docker ps        #查看当前运行容器
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
ae2ec1ac1942   centos    "/bin/bash"   47 seconds ago   Up 46 seconds             interesting_joliot
[root@docker /]# docker logs -f -t --tail 10 ae2ec1ac1942 #容器没有日志
  • 自己编写一段shell脚本让容器产生日志再次查看日志
[root@docker /]# docker stop ae2ec1ac1942                                               #停止当前centos容器
ae2ec1ac1942

[root@docker /]# docker run -d centos /bin/sh -c "while true;do echo pakho;sleep 1;done"#编写一段循环
WARNING: IPv4 forwarding is disabled. Networking will not work.
7c7f4ac3a694ab6c8c4745e8fe3121fad23d50ca8f304249b2c179bda9fb3310
[root@docker /]# docker ps                                                              #再次查看后台进程
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
7c7f4ac3a694   centos    "/bin/sh -c 'while t…"   3 seconds ago   Up 2 seconds             bold_wiles

#显示日志
-tf :            显示日志产生时间及日志
--tail + number : 显示日志行数

[root@docker /]# docker logs -tf --tail 10 7c7f4ac3a694
2021-06-21T12:57:27.818168989Z pakho
2021-06-21T12:57:28.821377443Z pakho
2021-06-21T12:57:29.826794284Z pakho
2021-06-21T12:57:30.829251081Z pakho
2021-06-21T12:57:31.833963508Z pakho
2021-06-21T12:57:32.837149236Z pakho
2021-06-21T12:57:33.843411753Z pakho
2021-06-21T12:57:34.848600248Z pakho
...
  • 查看容器中的进程信息top
[root@docker /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
7c7f4ac3a694   centos    "/bin/sh -c 'while t…"   7 minutes ago   Up 7 minutes             bold_wiles
[root@docker /]# docker top 7c7f4ac3a694
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4730                4711                0                   20:53               ?                   00:00:00            /bin/sh -c while true;do echo pakho;sleep 1;done
root                5263                4730                0                   21:01               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
  • 查看镜像元数据docker inspect
  • docker inspect 容器id
[root@docker /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                        PORTS     NAMES
7c7f4ac3a694   centos    "/bin/sh -c 'while t…"   9 minutes ago    Up 9 minutes                            bold_wiles
[root@docker /]# docker inspect 7c7f4ac3a694
  • ★进入当前正在运行的容器方式1
  • 通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
  • docker exec -it 容器id /bin/bash
    • exec:执行 -it:交互模式运行 /bin/bash :通过bash命令行进入
[root@docker /]# docker ps                              #查看当前正在运行的容器
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
7c7f4ac3a694   centos    "/bin/sh -c 'while t…"   20 minutes ago   Up 20 minutes             bold_wiles

[root@docker /]# docker exec -it 7c7f4ac3a694 /bin/bash
[root@7c7f4ac3a694 /]#
  • 进入当前正在运行容器方式2
  • docker attach 容器id
[root@docker /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
7c7f4ac3a694   centos    "/bin/sh -c 'while t…"   27 minutes ago   Up 27 minutes             bold_wiles
[root@docker /]# docker attach 7c7f4ac3a694
Options区别
docker exec进入容器后开启一个新的终端,可以在里面操作,也是我们常用的
docker attach进入容器正在执行的终端,不会启动新的进程
  • 从容器中拷贝文件到主机上
  • docker cp 容器id:容器内路径 目的主机路径
  • 当前copy是一个手动过程,未来我们使用-v卷的技术,可以实现
[root@docker home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
6df3271d6fe5   centos    "/bin/bash"   2 minutes ago   Up 2 minutes             tender_dijkstra
[root@docker home]# docker attach 6df3271d6fe5                          #进入当前正在停留的命令行
[root@6df3271d6fe5 home]# echo 'echo <h1>pakho</h1>' > /home/index.html #容器内创建测试的html主页文件
[root@6df3271d6fe5 home]# exit                                          #退出容器
exit 

[root@docker home]# docker ps                                           #再次查看运行中的容器,发现没有
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

只要容器在,数据就存在,跟运行不运行没有任何关系,虽然容器停止,但是数据存在

#在真机上进行copy
[root@docker home]# docker ps -a                                        #查看历史曾运行过的容器
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
6df3271d6fe5   centos    "/bin/bash"   9 minutes ago   Exited (0) 3 minutes ago             tender_dijkstra
[root@docker home]# docker cp 6df3271d6fe5:/home/index.html /home/      #从容器的家目录下的html文件拷贝至当前/home
[root@docker home]# ls                                                  #查看文件是否存在,证明copy是成功的
index.html

常用命令小结

在这里插入图片描述

attach          #当前shell下attach 连接指定运行镜像
build           #通过Dockerfile定制镜像
commit          #提交当前容器为新的镜像
cp              #从容器中拷贝指定文件或者目录到宿主机中
create          #创建一个新的容器,同run,但不启动容器
diff            #查看docker容器变化
events          #从docker服务获取容器实时事件
exec            #在已存在的容器上运行命令
export          #导出容器内容流作为一个tar归档文件[对应import]
history         #展示一个镜像形成历史
images          #列出系统当前镜像
import          #从tar包中的内容创建一个新的文件系统映像[对应export]
info            #显示系统相关信息
inspect         #查看容器详细信息
kill            #kill指定docker容器
load            #从一个tar包中加载一个镜像[对应save]
login           #注册或者登陆一个docker源服务器
logout          #从当前Docker registry 退出
logs            #输出当前容器日志信息
port            #查看映射端口对应的容器内部源端口
pause           #暂停容器
ps              #列出容器列表
pull            #从docker镜像源服务器拉取指定镜像或者库镜像
push            #推送指定镜像或者库镜像至docker源服务器
restart         #重启运行的容器
rm              #移除一个或多个容器
rmi             #移除一个或多个镜像[无容器使用镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run             #创建一个新的容器并运行一个命令
save            #保存一个镜像为一个tar包[对应load]
search          #在docker hub中搜索镜像
start           #启动容器
stop            #停止容器
tag             #给源中镜像打标签
top             #查看容器中运行的进程信息
unpause         #取消暂停容器
version         #查看docker版本号
wait            #截取容器停止时的退出状态值

Docker部署Nginx

[root@docker ~]# docker search nginx       #搜索Nginx镜像

[root@docker ~]# docker pull nginx         #下载镜像

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    d1a364dc548d   3 weeks ago   133MB

#后台启动 --name:挂载名字 8000端口对于容器内服务器外部的地址 80为容器内部地址  8000外部端口映射80内部端口,nginx为启动
[root@docker ~]# docker run -d --name nginx01 -p 8000:80 nginx
f04d5b31908108656a4a0b7e8bd7a876b28f68dce260c5e4a5b2f93a81f6a915

[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
f04d5b319081   nginx     "/docker-entrypoint.…"   22 seconds ago   Up 21 seconds   0.0.0.0:8000->80/tcp, :::8000->80/tcp   nginx01

#本机测试
[root@docker ~]# curl localhost:8000

在这里插入图片描述

Docker部署Tomcat

#之前的启动都是后台,停止了容器之后,容器还是可以查到,官方的使用一般用来测试,用完即删
[root@docker ~]# docker run -it --rm tomcat:9.0

[root@docker ~]# docker pull tomcat:9.0

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat       9.0       5505f7218e4d   4 days ago    667MB
nginx        latest    d1a364dc548d   3 weeks ago   133MB

[root@docker ~]# docker run -d -p 9000:8080 --name tomcat01 tomcat
66a4a3f9371ec4620e93c8abe481a100c4287e6d39396d46475abf98555e8af0

[root@docker ~]# curl localhost:9000
  • 此时发生报错,说明tomcat并不是完整的
  • 但测试访问并没有问题
    在这里插入图片描述
#进入tomcat容器
[root@docker ~]# docker exec -it tomcat01 /bin/bash
root@66a4a3f9371e:/usr/local/tomcat# cd webapps
root@66a4a3f9371e:/usr/local/tomcat/webapps# ls
root@66a4a3f9371e:/usr/local/tomcat/webapps# 
  • 发现问题,Linux命令少了!
    • 没有webapps默认配置文件导致无法访问!
    • 原因,默认为最小镜像,所有不必要的都剔除掉,保证最小运行的环境
#此时网站默认配置文件位于webapps.dist目录下
root@66a4a3f9371e:/usr/local/tomcat# cd webapps.dist/
root@66a4a3f9371e:/usr/local/tomcat/webapps.dist# ls
ROOT  docs  examples  host-manager  manager

#将配置文件复制进默认网站配置文件
root@66a4a3f9371e:/usr/local/tomcat# cp -r webapps.dist/* webapps
  • 再次访问,部署成功!
    在这里插入图片描述

Docker部署elasticsearch

安装elasticsearch

  • 暴露端口很多!
  • es十分耗内存
  • es 的数据需要放置安全目录!挂载!
  • Docker hub站点
#启动elasticsearch 下载安装一步到位
[root@docker ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.10.1

#启动了 Linux就卡住了
[root@docker ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS              PORTS                                                                                  NAMES
8ada4f09db9a   elasticsearch:7.10.1   "/tini -- /usr/local…"   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
  • 通过docker stats查看cpu状态
  • es是十分耗内存的
#查看es是否安装成功
[root@docker ~]# curl localhost:9200
{
  "name" : "8ada4f09db9a",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "08YOetapQd2LhpNsKZ4Q5g",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
    "build_date" : "2020-12-05T01:00:33.671820Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

#查看docker容器cpu状态
[root@docker ~]# docker stats 
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
8ada4f09db9a   elasticsearch   0.32%     591.6MiB / 974.6MiB   60.71%    648B / 0B         8.3GB / 199MB     48

#解决MEM高消耗的问题,增加内存限制

#停止es
[root@docker ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED             STATUS             PORTS                                                                                  NAMES
8ada4f09db9a   elasticsearch:7.10.1   "/tini -- /usr/local…"   12 minutes ago      Up 12 minutes      0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
[root@docker ~]# docker stop 8ada4f09db9a
8ada4f09db9a

#增加内存限制 -e 环境配置修改
[root@docker ~]# docker run -d --name elasticsearch06  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.10.1

[root@docker ~]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
a1721d45249d   elasticsearch:7.10.1   "/tini -- /usr/local…"   39 seconds ago   Up 37 seconds   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch06

#查看MEM
[root@docker ~]# docker stats a1721d45249d
CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O        PIDS
a1721d45249d   elasticsearch06   0.62%     428.4MiB / 974.6MiB   43.96%    648B / 0B   238MB / 3.63MB   46

[root@docker ~]# curl localhost:9200

在这里插入图片描述

以上是关于Docker——Docker常用命令+部署一些基本服务(NginxTomcatelasticsearch)的主要内容,如果未能解决你的问题,请参考以下文章

开发者必备丨Docker客户端常用命令分享,一文搞定Docker

开发者必备丨Docker客户端常用命令分享,一文搞定Docker

Docker及常用软件的安装部署

docker常用命令

docker-day3——docker应用部署docker迁移与备份Dockerfile

docker常用命令