Docker快速入门笔记
1、docker概述
1.1、docker基本介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,即相互隔离。
官网地址:https://www.docker.com/
文档地址:https://docs.docker.com/
镜像库地址:https://hub.docker.com/
一个完整的Docker有以下四个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
1.2、docker的意义:
在开发过程中,项目开发所依赖的环境完全是OK的,将项目的jar包或者war包交付给运维人员时,前提是另一台机器的环境配置也是ok的,如果每一台机器在运行程序之前都需要单独配置环境,工作量之大不言而喻。
传统的项目部署模式: 安装—配置—运行;
Docker的部署模式:复制 — 运行;
1、交付标准化
正如docker的logo一样,Docker是软件工程领域的“标准化”交付组件,像是运输货物的集装箱一样。众所周知,集装箱能够将大小不一,不易搬运的物品封装成一个整体,它提供了一种通用的封装货物的标准,卡车、火车、货轮等运输工具采用这一标准,使得以集装箱为中心的标准化设计大大提高了物流运输的效率。
传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。
2、一次构建,多次交付
Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。
一次构建,到处运行,这也是docker的理念;
3、应用隔离
在运输的过程中,货物之间可以通过集装箱做到有效的隔离。同样的Docker可以隔离不同应用程序之间的相互影响。
1.3、docker 和 VM ware的差异
虚拟机技术:
- 在一个操作系统之上,安装运行另外一种操作系统。
- 需要虚拟出硬件、运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 占用资源比较多、步骤冗余繁杂、启动很慢
docker容器:
- 将软件运行所需要的资源打包到一个隔离的容器,直接运行在宿主机上,容器本身是没有自己的内核的,也没有虚拟硬件。
- docker是内核级别的虚拟化,可以在一个物理机上运行很多容器的实例,每个容器之间相互隔离、有自己的文件系统、互不影响,使得服务器的性能发挥到极致。
1.4、docker的组成
- 镜像(Image)
- 镜像好比是一个模板,一个镜像可以创建出来很多个容器实例;
- 类似于Java语言中类和对象的概念,即一个类可以实例化出来多个对象。
- 容器(Container)
- 独立运行的一个或一组应用, 是由镜像实例化出来的;
- 它可以被启动、开始、停止、删除。每个容器都是相互隔离的
- 仓库(Repository)
- 一个集中存放镜像文件的地方,每个仓库包含多个镜像,每个镜像有不同的标签(‘tag’: 类似于版本号)
- 仓库种类有私有仓库和公有仓库之分,Docker Hub:(https://hub.docker.com/)是最大的公有仓库
2、docker的安装
前期环境准备:本人购买的是阿里云的1核2G的服务器,具体操作及介绍见博文:
- 查看Linux系统版本命令: uname -r
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# uname -r
3.10.0-1062.18.1.el7.x86_64
# 系统内核版本为3.10.0
- 查看系统配置: cat /etc/os-release
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
- 安装docker
- 旧版本卸载(如果有)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 下载需要的安装包
yum install -y yum-utils
- 设置镜像的仓库
# 设置国外的地址(下载速度太慢)
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 设置阿里云的Docker镜像仓库(推荐使用,下载速度较快)
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装docker
# docker-ce为社区版,docker-ee为企业版
# 该命令默认为安装最新版本
yum install docker-ce docker-ce-cli containerd.io
# 如果想要安装指定版本:
yum install docker-ce-<版本号> docker-ce-cli-<版本号>
# 安装成功会出现 completed提示
- 启动docker
systemctl start docker
# 查看当前版本号,验证是否启动成功:
docker version
- 下载hello-world镜像进行测试
docker run hello-world
- 查看所下载的镜像
docker images
- docker卸载
# 1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2. 删除资源 /var/lib/docker是docker的默认工作路径
rm -rf /var/lib/docker
- docker重启
systemctl restart docker
3、配置阿里云镜像加速
- 登录阿里云官网,找到镜像加速服务栏: https://cr.console.aliyun.com/cn-beijing/instances/mirrors
- 在控制台依次执行一下四条命令,完成配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://h98xb7ko.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4、docker run 的运行流程:
4.1、hello-world 运行整体流程
- 首先会在本机中寻找:hello-world的镜像:
- 没有在本机找到:Unable to find image hello-world locally
- 从远程进行下载:pulling from library…
- 下载完毕:pull compelte
- 运行成功:hello from docker!
4.2、docker run 的执行流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETbIgH8Z-1652287080144)(E:\02-学习笔记\笔记图片\docker\1-docker run的运行步骤.png)]
4.3、底层原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,Docker Server(服务器)接收到Docker-Client (客户端) 的指令,就会执行这个指令。docker容器之间相互隔离,互不影响。
4.4、Docker VS VM Ware
- Docker比虚拟机更少的抽象层
- docker利用宿主机的内核,VM需要的是Guest OS
Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,直接利用宿主机的操作系统,而虚拟机则是需要加载Guest OS,虚拟机的这一操作便导致其启动为分钟级别的速度。
5、docker的常用命令
5.1 帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的信息 包括镜像和容器数量
docker --help # 帮助命令
可以通过docker的帮助文档查看:https://docs.docker.com/reference/
5.2 常用镜像命令
- docker images 查看本地主机上的所有镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 4 months ago 13.3kB
centos latest 5d0da3dc9764 5 months ago 231MB
# 字段解释:
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建的时间
SIZE 镜像的大小
# 通过docker images --help 可以查看该命令的详细使用
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all # 显示所有镜像
-f, --filter filter # 通过条件进行过滤显示
-q, --quiet # 只显示镜像的ID
- docker search 镜像名 搜索镜像
# docker search 镜像名
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter # 根据条件来筛选
--filter=STARS=500 # 按照STARS来筛选,筛选出数量在500之上的,这里并不是找出STARS等于500的
- docker pull 镜像名 下载镜像
# docker pull 镜像名 --下载镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull mysql # 下载mysql
Using default tag: latest # 如果命令中不写tag值,默认下载最新版本latest
latest: Pulling from library/mysql # docker images的核心:分层下载
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
# 下载指定版本:(前提是 指定的版本必须先存在于docker中)
docker pull mysql:5.7
由于docker images有分层下载,上面已经下载过mysql的最新版本,此处下载5.7版本的时候,由于有和最新版本公用的地方,在这次下载中直接显示为Already exists。5.7所独有的东西会被下载。
- docker rmi 镜像删除
docker rmi # rm 删除 i镜像(image)
docker rmi -f 条件 # 根据条件进行删除
# 批量删除
docker rmi -f 容器id # 删除指定id的镜像
docker rmi -f 容器id 容器id 容器id # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除全部的镜像
# $(docker images -aq)表示显示所有的image的ID,并作为参数,传递给 -f
5.3 常用容器命令
说明:有了镜像之后才能创建容器,下载一个centos镜像来进行学习
- 下载centos镜像
docker pull centos
- 启动/退出 镜像
# 启动:
docker run [可选参数] 镜像名字
#参数说明
--name="Name" #容器名字 用来区分容器
-d # 后台方式运行
-it # 使用交互方式运行,进入容器查看内容
-p # 指定容器的端口 -p8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
# 启动并进入容器内部
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -it centos /bin/bash
[root@208950ad49e7 /]# ls 查看容器内的centos,基础版本很多命令都是不完善的
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
# 从容器中退回主机
[root@208950ad49e7 /]# exit 退出镜像服务器
- 列出所有运行的容器
#docker ps
docker ps # 当前正在运行的容器
-a # 列出在当前正在运行的容器,+历史运行过的容器
-n=2 #显示最近创建的2个容器(最近的)
-q #只显示容器的编号
- 退出容器的两种方法
exit # 容器停止并退出
ctrl+p+q # 容器不停止,退出
- 删除容器
docker rm 容器id # 删除指定id的容器(正在运行的容器删除不了)
docker rm -f # 可以强制性删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除全部容器
docker ps -a -q|xrags docker rm #先查询出所有的容器id,用管道符传递给|后面的语句,进行全部删除
- 启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id # 重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
5.4 常用的其他命令:
- 查看日志命令
docker logs
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details Show extra details provided to logs
-f, --follow #显示日志
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all")
-t, --timestamps # 显示时间戳
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
# docker logs
-tf #显示日志
--tail 10 #显示10条日志
- 查看容器中进程信息
# docker top 容器id
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker top 6289e8425a39
UID PID PPID C STIME TTY TIME CMD
root 29143 29125 0 22:37 pts/0 00:00:00 /bin/bash
- 查看镜像的元数据
# docker inspect 容器id
- 进入当前正在运行我的容器
通常,容器是使用后台方式运行的,需要进入容器,修改一些配置
# 方式1
docker exet -it 容器id
# 方式2
docker attach 容器id
区别:
# docker exec 进入容器后没开启一个新的终端,可以在里面操作,是常用的进入命令
# docker attach 进入容器正在执行我的终端,不会启动新的进程
- 从容器内拷贝文件到主机上
# 命令
docker cp 容器id:容器内文件路径 目的路径
6、练习
6.1 nginx 部署
- 搜素镜像
# docker search nginx
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16754 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 165
bitnami/nginx Bitnami nginx Docker Image 125 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 48
bitnami/nginx-ingress-controller Bitnami Docker Image for NGINX Ingress Contr… 18 [OK]
rancher/nginx-ingress-controller 10
- 拉取下载镜像
# docker pull nginx 下载最新版本
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
- 查询本地下载的镜像
# docker images
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 4 months ago 141MB
centos latest 5d0da3dc9764 7 months ago 231MB
- 运行镜像
# docker run -d --name 别名 -p 主机端口:容器端口 镜像名字
# -d # 后台运行
# -- name # 起名字
# -p 主机端口:容器端口 # 端口映射
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -d --name nginx01 -p 3344:80 nginx
d1e7b7a311bb2f8cd2033b1329178882c453b1ab308afa577c50e21d99fce745
- 端口映射(暴露)的概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDuPFkdt-1652287080146)(E:\02-学习笔记\笔记图片\docker\docker概念介绍\8.3 端口暴露.png)]
- 查看运行的镜像
# docker ps
# docker ps -a # 所有运行的镜像,包括历史运行的
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1e7b7a311bb nginx "/docker-entrypoint.…" 18 seconds ago Up 17 seconds 0.0.0.0:3344->80/tcp nginx01
- 本地查看运行
# curl localhost:3344 可以通过本地查看运行状态、
# 通过公网查看: 虚拟机ip:映射端口
# 当访问出现错误时,需要登录阿里服务器控制台,添加334的安全组
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]#
配置阿里云安全组,通过公网访问的结果:
访问路径为:http://服务器的ip地址:暴露的端口,便能够成功访问到nginx。
- 配置文件
# 进入容器,进行自定义配置文件
# docker exec -it 给容器起的别名 /bin/bash 进入容器后台
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker exec -it nginx01 /bin/bash
# 查看 nginx 所在的目录
root@d1e7b7a311bb:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
# 进入nginx所在的目录
root@d1e7b7a311bb:/# cd /etc/nginx
# 查看目录中文件列表
root@d1e7b7a311bb:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
至此,nginx部署完成 !
6.2 tomcat部署
- 使用docker run命令下载
docker run 时会自动帮助下载 无需通过search进行搜索 再pull
- 官方使用:
docker run -it --rm tomcat:9.0
之前启动都是后台启动,停止之后,容器还是可以查到,--rm一般用来测试,用完就删除
使用docker ps -a查看记录 没有找到启动tomcat的记录
# 前期学习不建议这么做,还是老老实实的通过pull来进行下载吧
- 下载并运行tomcat镜像
# 1、docker pull tomcat # 下载tomcat镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Already exists
9b829c73b52b: Already exists
cb5b7ae36172: Already exists
6494e4811622: Already exists
668f6fcc5fa5: Already exists
dc120c3e0290: Already exists
8f7c0eebb7b1: Already exists
77b694f83996: Already exists
0f611256ec3a: Already exists
4f25def12f23: Already exists
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
# 2、docker images 查看本地所有镜像
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 4 months ago 141MB
tomcat latest fb5657adc892 4 months ago 680MB
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
centos latest 5d0da3dc9764 7 months ago 231MB
# 3、docker run -d -p 3355:8080 --name tomcat01 tomcat 运行
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
3e7fc95c278a15b8dbe8e0773089cbe6ede11da07ccb7b4d3718e73de7146a57
# 进入tomcat01中:
docker exec -it tomcat01 /bin/bash/
# 进入之后发现,在外部访问:http://39.107.241.179:3355,显示404错误,表示没有加载到资源
# 进入tomcat01中,发现webapps目录为空,webapps.dist文件夹中包括访问所需内容,
# 在tomcat01中,将webapps.dist中的内容拷贝到webapps中:
cp -r webapps.dist/* webapps
随后刷新之后,便可通过外部访问tomcat界面
- 阿里云设置安全组 3355,通过外部公网访问,发现404错误 :
导航栏中已经显示出tomact的图标,但是界面出现404,证明目前通过公共外网是可以访问到tomcat的,只是没有加载到资源,进入镜像容器内查看tomcat配置文件
- 进入容器内部
# docker exec -it tomcat01 /bin/bash
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# docker exec -it tomcat01 /bin/bash
root@3e7fc95c278a:/usr/local/tomcat# ls #查看容器中的文件
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
root@3e7fc95c278a:/usr/local/tomcat# cd webapps # 进入webapps目录,ls查看列表,发现目录中没有文件,是空的
root@3e7fc95c278a:/usr/local/tomcat/webapps# ls
root@3e7fc95c278a:/usr/local/tomcat/webapps# cd .. # 返回上一级
root@3e7fc95c278a:/usr/local/tomcat# cd webapps.dist # 查看webapps.dist发现该目录中存放着tomcat的相关文件
root@3e7fc95c278a:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
通过进入容器内部,发现容器中的文件少了,是因为:阿里云镜像默认下载的是最小的镜像,保证最小的运行环境。
将webapps.dist目录下的文件拷贝到webapps目录中
# 将webapps.dist目录下的所有内容,拷贝到webapps中
root@3e7fc95c278a:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@3e7fc95c278a:/usr/local/tomcat# cd webapps
root@3e7fc95c278a:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@3e7fc95c278a:/usr/local/tomcat/webapps#
刷新公网的访问路径,之后,显示可以成功访问:
- 内部通过curl访问:
[root@iZ2ze1dg1xkfc3i15ybixmZ ~]# curl localhost:3355
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/10.0.14</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/10.0.14</h1>
</div>
<p class="copyright">Copyright ©1999-2022 Apache Software Foundation. All Rights Reserved</p>
</div>
</body>
</html>
至此,tomcat 部署完成!
6.3、ElasticSearch部署
- 安装运行命令
docker run -d --name elasticsearch02 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
- 内存占用率很高,修改页面配置
ES所占用的内存很高,由于学习所用服务器为1核2G的,ES在启动之后内存占用率太高,会导致虚拟机很卡顿,可以stop之后,
在docker run时,添加 **-e ES_JAVA_OPTS=“-Xms64m -Xmx512m”**修改页面配置参数,类似于在IDEA的配置文件中修改,
Xms:最小占用64m,Xmx最大占512m
docker run -d --name elasticsearch02 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
- 查看资源占用情况
docker stats
6.4、问题思考
- 在进行nginx配置时,每次改动nginx的配置文件,都需要通过虚拟机进入到容器内部进行操作,这无疑十分麻烦。
- 同样的,在部署tomcat时,还需要去webapps.dist目录拷贝内容到webapps,每次进入容器也比较繁琐。
- 上述两个问题,如果能在容器外部提供一个映射路径供我们直接访问,修改岂不美哉!
这一问题,通过后面学习docker容器数据卷技术,会得到一个很好的解决。
快速入门篇内容到此结束,多思考、多练习,掌握基本命令。