第三章 Docker中常用软件安装部署练习
目录
一、镜像仓库介绍
二、Nginx部署
2.1. 拉取镜像
2.2. 查看镜像
2.3. 运行镜像
2.4. 查看在运行中的容器进程
编辑
2.5. 访问Nginx
三、Tomcat部署
编辑 3.1. 拉取镜像
3.2. 运行镜像
3.3. 拷贝文件到webapps
3.4. 访问tomcat
四、ElasticSearch部署
4.1. 拉取运行镜像
编辑 4.2. 访问ElasticSearch编辑
4.3. 调整ElasticSearch的资源占用率
五、MySQL部署
5.1. 精简版安装
5.2. 高可靠安装
六、Portainer可视化面板安装
6.1. 拉取运行镜像
6.2. 访问 Portainer
镜像仓库地址:
https://image.cgdcgd.cc/search?q=nginx
注:对于Docker常用命令还不熟悉的同学,可以回看上一个章节,巩固常用命令基础
一、镜像仓库介绍
如下图所示,以Nginx为例,进入网站后在搜索栏里可以找自己想要的应用程序的镜像版本:
我们也可以按照上一章讲到的,通过命令docker search nginx来搜索版本信息下载。上图中小红框圈的都是tag
Docker安装软件的基本步骤:
1. 搜索镜像
2. 拉取镜像
3. 查看镜像
4. 启动镜像(进行服务端口映射等)run命令可以同时执行2(pull命令)和4两个步骤
5. 停止容器
6. 移除容器
# 搜索ngnix的镜像版本
docker search ngnix
# 根据指定的tag即版本号下载ngnix
docker pull nginx:tag
二、Nginx部署
2.1. 拉取镜像
通过run命令也可以直接拉取镜像再运行
2.2. 查看镜像
2.3. 运行镜像
docker run -d --name nginx1 -p 3355:80 nginx
docker run
:这是Docker的一个基本命令,用于启动一个新的容器。
-d
:这个标志表示“detached mode”,即以后台模式运行容器。这意味着容器将在后台运行,并且你可以继续使用你的终端或命令行界面执行其他任务。
--name nginx1
:这个标志用于给容器指定一个名字,这里命名为nginx1
。给容器命名有助于管理和识别,尤其是在你有多个容器运行时。
-p 3344:80
:这个标志用于端口映射。它将宿主机的3344端口映射到容器内部的80端口。这意味着,当你访问宿主机的3344端口时,你实际上是在访问容器内部的Web服务器(例如Nginx)的80端口。
nginx
:这是你想要运行的Docker镜像的名字。在这个例子中,你正在运行Nginx的Docker镜像。
2.4. 查看在运行中的容器进程
Nginx所在容器中的具体位置,可以修改nginx.conf的配置文件,本文不做修改:
2.5. 访问Nginx
通过我的服务器公网IP地址+公网开放的端口,可以成功访问到内网80端口的Nginx
三、Tomcat部署
3.1. 拉取镜像
此处我们先通过pull拉取版本为9.0.0的tomcat镜像
3.2. 运行镜像
不同于安装Nginx时我们先pull拉取镜像,这里我们再演示下直接通过run方法拉取并运行其他版本的镜像,节省pull的操作:
3.3. 拷贝文件到webapps
在通过外网访问前我们先进入到tomcat的webapps目录下,发现里面是空的,没有页面。通常docker镜像生成的tomcat这个文件夹为空,所以为了测试访问我们的tomcat,我们可以把下图中webapps.dist中的内容拷贝到webapps中:
3.4. 访问tomcat
四、ElasticSearch部署
部署ElasticSearch之前我们一定要知道,es暴露的端口比较多,十分耗内存且数据一般需要放置(挂载)到安全的目录下。
4.1. 拉取运行镜像
$ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
--net somenetwork 可以先删掉,本章不做讲解,在后续章节的Docker网络的内容中再详细阐述。
discovery.type=single-node 表明是单个节点,本章主要作为演示,我们就不做集群了。
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
4.2. 访问ElasticSearch
4.3. 调整ElasticSearch的资源占用率
如果本地的服务器内存资源比较紧张,可以通过如下命令调整ES占用的资源上下限:
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
通过docker stats命令我们可以查看各容器的资源占用情况 :
五、MySQL部署
5.1. 精简版安装
1. 拉取运行镜像
docker pull mysql
docker run --name wzx-mysql -e MYSQL_ROOT_PASSWORD=1234567890 -d mysql:tag
命令解析:
-d 后台运行
--name
给容器指定名字
-e MYSQL_ROOT_PASSWORD 设置环境参数,给数据库
设定root用户的密码
tag
想要安装的MySQL版本的标签,如5.7
、8.0
或者latest,使用时替换这个tag即可
2. 访问MySQL
进入容器后,通过mysql -uroot -p密码登录MySQL,就可以开始常规的MySQL增删改查等等一系列数据库操作了。
5.2. 高可靠安装
我们为MySQL的日志、配置文件以及数据文件目录进行挂载,避免在容器被删等情况下数据丢失
docker run -d -p 3310:3306 --privileged=true -v /home/mysql/logs:/var/log/mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234567890 --name mysql01 mysql:latest
命令解析:
-d 后台运行容器
-p 主机3310和容器3306数据库端口映射
--privileged 开放容器访问主机的权限,避免出现权限不足的访问异常
-v 卷挂载,将主机目录/home/mysql/conf和容器/etc/mysql/conf.d文件映射
-v 卷挂载,将主机目录/home/mysql/data和容器目录/var/lib/mysql映射
-e 环境配置,MYSQL_ROOT_PASSWORD=1234567890 设定mysql进入的初始密码
--name 指定容器别名
mysql:latest 指定mysql版本
注:-v 可以有多个,即可以同时挂载多个路径
如下图所示,MySQL镜像安装成功:
六、Portainer可视化面板安装
6.1. 拉取运行镜像
Portainer 是一个轻量级的管理用户界面,可以用来管理多个Docker环境。以下是使用Docker安装Portainer的步骤:
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
-
-d
表示在后台运行容器。 -
-p 9000:9000
表示将容器的9000端口映射到宿主机的9000端口。 -
--name portainer
为容器指定一个名称。 -
--restart always
表示如果容器退出,将自动重启。 -
-v /var/run/docker.sock:/var/run/docker.sock
表示将Docker守护进程的Unix套接字挂载到容器中,Portainer可以通过这个套接字与Docker守护进程通信。 -
-v portainer_data:/data
表示创建一个持久化的数据卷来存储Portainer的数据。 -
portainer/portainer-ce
是Portainer的Docker镜像名称。
6.2. 访问 Portainer
第一次访问Portainer时,你需要设置管理员用户和密码。完成设置后,你可以登录并开始管理你的Docker环境。