当前位置: 首页 > news >正文

Docker技术系列文章,第六篇——使用 Docker 部署常见应用

        在当今数字化时代,应用程序的快速部署与高效管理至关重要。Docker 作为一种领先的容器化技术,为我们提供了便捷且可靠的方式来部署各类常见应用。通过将应用及其依赖项打包成一个独立的容器,我们可以轻松地在不同环境中运行应用,而无需担心环境差异带来的问题。本文将详细介绍如何使用 Docker 部署几种常见的应用,包括 Web 服务器(如 Nginx、Tomcat)和数据库(如 MySQL、MongoDB)。

一、Docker 部署应用的优势​

1. 环境一致性​

传统的应用部署往往会遇到 “在我的机器上能运行,在生产环境却不行” 的问题。这通常是由于开发、测试和生产环境之间存在细微的差异,如操作系统版本、依赖库版本等。而 Docker 通过将应用及其所有依赖项打包在一个容器中,确保了应用在任何环境中运行的一致性。无论在本地开发机器、测试服务器还是生产环境,只要安装了 Docker,应用都能以相同的方式运行。​

2. 快速部署​

Docker 容器的启动速度极快,通常只需几秒钟。相比传统的虚拟机部署,这大大缩短了应用的部署时间。在需要快速扩展或收缩应用规模时,Docker 的快速部署特性尤为重要。例如,在应对突发的高流量访问时,可以迅速启动多个容器实例来分担负载。​

3. 易于管理和维护​

使用 Docker,我们可以方便地管理应用的生命周期。通过简单的命令,就可以启动、停止、更新和删除容器。而且,Docker Hub 等镜像仓库提供了大量现成的应用镜像,我们可以直接拉取并使用,无需从头构建,进一步简化了应用的部署和维护工作。​

二、使用 Docker 部署 Nginx​

Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于各种 Web 应用场景。以下是使用 Docker 部署 Nginx 的步骤:​

1. 拉取 Nginx 镜像​

首先,我们需要从 Docker Hub 上拉取 Nginx 镜像。在命令行中执行以下命令:

docker pull nginx 

这条命令会从 Docker Hub 下载最新版本的 Nginx 镜像到本地。如果希望拉取特定版本的 Nginx 镜像,可以在镜像名称后加上版本号,例如: 

docker pull nginx:1.18.0 

2. 运行 Nginx 容器​

拉取镜像后,我们可以启动一个 Nginx 容器。执行以下命令:

 docker run -d -p 80:80 --name mynginx nginx

命令解释:​

  • -d:表示在后台运行容器。​
  • -p 80:80:将容器内部的 80 端口映射到宿主机的 80 端口。这样,我们可以通过访问宿主机的 80 端口来访问 Nginx 服务。​
  • --name mynginx:为容器指定一个名称为mynginx,方便后续管理。​
  • nginx:指定要运行的镜像名称。​

3. 配置 Nginx​

默认情况下,Nginx 容器会使用默认的配置文件。如果我们需要自定义 Nginx 的配置,可以通过挂载本地的配置文件到容器中。首先,在本地创建一个 Nginx 配置文件,例如nginx.conf,内容如下:

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

                        '$status $body_bytes_sent "$http_referer" '

                        '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

server {

        listen 80;

        server_name localhost;

                location / {

                root /usr/share/nginx/html;

                index index.html index.htm;

                }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        root /usr/share/nginx/html;

        }        

}

}

 然后,使用以下命令启动容器并挂载配置文件:

docker run -d -p 80:80 --name mynginx -v   /path/to/nginx.conf:/etc/nginx/nginx.conf nginx 

这里/path/to/nginx.conf是本地配置文件的路径,/etc/nginx/nginx.conf是容器内 Nginx 配置文件的路径。通过这种方式,我们可以灵活地定制 Nginx 的配置。

Nginx 容器通过端口映射将容器内的 80 端口暴露到宿主机的 80 端口,用户通过访问宿主机的 80 端口即可访问 Nginx 服务。同时,本地的配置文件通过挂载的方式替换了容器内的默认配置文件,实现了自定义配置。

三、使用 Docker 部署 Tomcat​

Tomcat 是一个广泛使用的 Java Servlet 容器,用于运行 Java Web 应用程序。以下是使用 Docker 部署 Tomcat 的步骤:​

1. 拉取 Tomcat 镜像​

从 Docker Hub 拉取 Tomcat 镜像:

 docker pull tomcat

同样,如果需要特定版本,可以指定版本号,如: 

docker pull tomcat:9.0.56 

2. 运行 Tomcat 容器​

启动 Tomcat 容器:

 docker run -d -p 8080:8080 --name mytomcat tomcat

命令解释:​

  • -d:后台运行容器。​
  • -p 8080:8080:将容器内的 8080 端口映射到宿主机的 8080 端口,因为 Tomcat 默认监听 8080 端口。​
  • --name mytomcat:为容器命名为mytomcat。​
  • tomcat:指定使用的镜像。

3. 部署 Java Web 应用​

要将自己的 Java Web 应用部署到 Tomcat 容器中,可以将应用的 WAR 文件复制到容器的webapps目录。假设我们有一个名为myapp.war的应用文件,可以使用以下命令将其复制到容器中:

docker cp /path/to/myapp.war mytomcat:/usr/local/tomcat/webapps/

这里/path/to/myapp.war是本地 WAR 文件的路径,mytomcat是容器名称,/usr/local/tomcat/webapps/是容器内 Tomcat 的应用部署目录。复制完成后,Tomcat 会自动解压并部署该应用。用户可以通过访问http://宿主机IP:8080/myapp来访问部署的应用。

四、使用 Docker 部署 MySQL​

MySQL 是一种流行的关系型数据库。以下是使用 Docker 部署 MySQL 的步骤:​

1. 拉取 MySQL 镜像​

从 Docker Hub 拉取 MySQL 镜像:

docker pull mysql

若要特定版本,如 8.0.26:

docker pull mysql:8.0.26

2. 运行 MySQL 容器​

启动 MySQL 容器,并设置一些必要的环境变量:

docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=rootpassword -e MYSQL_DATABASE=mydatabase -e MYSQL_USER=myuser -e MYSQL_PASSWORD=mypassword mysql

命令解释:​

  • -d:后台运行。​
  • -p 3306:3306:将容器内的 3306 端口(MySQL 默认端口)映射到宿主机的 3306 端口。​
  • --name mymysql:容器名称为mymysql。​
  • -e MYSQL_ROOT_PASSWORD=rootpassword:设置 MySQL root 用户的密码为rootpassword。​
  • -e MYSQL_DATABASE=mydatabase:创建一个名为mydatabase的数据库。​
  • -e MYSQL_USER=myuser:创建一个名为myuser的用户。​
  • -e MYSQL_PASSWORD=mypassword:设置myuser用户的密码为mypassword。

3. 连接到 MySQL 数据库​

可以使用 MySQL 客户端连接到运行在容器内的 MySQL 数据库。例如,使用mysql命令行工具:

mysql -h 127.0.0.1 -P 3306 -u myuser -p

输入密码mypassword后,即可进入 MySQL 命令行界面,对mydatabase数据库进行操作。

五、使用 Docker 部署 MongoDB​

MongoDB 是一种非关系型数据库,以其灵活的文档存储模型而受到广泛应用。以下是使用 Docker 部署 MongoDB 的步骤:​

1. 拉取 MongoDB 镜像​

从 Docker Hub 拉取 MongoDB 镜像:

 docker pull mongo

如需特定版本,如 4.4.10:

docker pull mongo:4.4.10 

2. 运行 MongoDB 容器​ 

启动 MongoDB 容器:

 docker run -d -p 27017:27017 --name mymongo mongo

命令解释:​

  • -d:后台运行。​
  • -p 27017:27017:将容器内的 27017 端口(MongoDB 默认端口)映射到宿主机的 27017 端口。​
  • --name mymongo:容器名称为mymongo。​

3. 连接到 MongoDB 数据库​

可以使用 MongoDB 客户端(如mongo命令行工具)连接到运行在容器内的 MongoDB 数据库:

 mongo --host 127.0.0.1 --port 27017

连接成功后,即可在 MongoDB 命令行界面进行数据库操作。 

通过本篇文章,对使用 Docker 部署 Nginx、Tomcat、MySQL 和 MongoDB 等常见应用的详细介绍,相信已经掌握了使用 Docker 进行应用部署的基本方法。

相关文章:

  • DeepSeek-R1 模型现已在亚马逊云科技上推出
  • mac 下配置flutter 总是失败,请参考文章重新配置flutter 环境MacOS Flutter环境配置和安装
  • 【qt】文件类(QFile)
  • unity中Xcharts图表鼠标悬浮表现异常
  • idea中如何使用git
  • Redis为什么快?
  • 人工智能赋能美妆零售数字化转型:基于开源AI大模型的S2B2C商城系统构建
  • Ruby 简介
  • Docker Compose 基础知识
  • Linux云计算SRE-第二十一周
  • Java课程设计(双人对战游戏)持续更新......
  • 方法指南:利用边缘计算实现低延迟直播流媒体服务
  • 【STM32】GPIO
  • GMII 接口
  • 泛目录程序,无极泛目录是如何搭建强大站群的?
  • mac部署CAT监控服务
  • 构建可扩展、可靠的网络抓取、监控和自动化应用程序的终极指南
  • Go常用的设计模式
  • C++:动态内存管理(含五大内存分区区分)详解
  • F.binary_cross_entropy与sklearn.metric.log_loss的比较
  • 多地晒五一假期前两日成绩单,湖南单日客流同比增长逾三成
  • 三亚再回应游客骑摩托艇出海遇暴雨:俱乐部未配备足额向导人员,停业整改
  • 申活观察|咖香涌动北外滩,带来哪些消费新想象?
  • 长三角铁路今日预计发送旅客420万人次,有望创单日客发量新高
  • 五一去哪玩?“时代交响”音乐会解锁艺术假期
  • 停电催生商机,中国品牌 “照亮” 西班牙