Java Docker本地部署

Docker 本地部署是指在本地计算机上安装和配置 Docker 环境,并使用 Docker 来运行和管理应用程序。本地部署可以帮助开发者在自己的机器上快速搭建开发环境,进行应用的开发、测试和调试。以下是一个详细的步骤指南,帮助你在本地计算机上部署 Docker。

1. 安装 Docker

1.1 Windows

  1. 检查系统要求:确保你的 Windows 版本是 Windows 10 Pro、Enterprise 或 Education(Build 14393 或更高版本)。家庭版用户可能需要更新到 Windows 10 Pro。
  2. 启用 WSL 2:打开 PowerShell 以管理员身份运行以下命令:
css 复制代码
wsl --install
  1. 下载 Docker Desktop :访问 ​Docker 官方下载页面​,下载适用于 Windows 的 Docker Desktop 安装包。
  2. 安装 Docker Desktop:双击下载的安装包,按照提示完成安装。
  3. 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。

1.2 macOS

  1. 下载 Docker Desktop :访问 ​Docker 官方下载页面​,下载适用于 macOS 的 Docker Desktop 安装包。
  2. 安装 Docker Desktop :双击下载的 ​.dmg​ 文件,按照提示完成安装。
  3. 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。

1.3 Linux

  1. 更新系统
sql 复制代码
sudo apt-get update
sudo apt-get upgrade
  1. 安装必要的包
arduino 复制代码
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥
bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定版存储库
bash 复制代码
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装 Docker Engine
sql 复制代码
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 启动 Docker 服务
bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

2. 配置 Docker

2.1 配置镜像加速

为了提高 Docker 镜像的下载速度,可以配置国内的镜像加速器。编辑 ​​/etc/docker/daemon.json​​ 文件,添加如下内容:

json 复制代码
{
  "registry-mirrors": ["https://<Your-ID>.mirror.aliyuncs.com"]
}

然后重启 Docker 服务:

复制代码
sudo systemctl restart docker

3. 测试 Docker 安装

运行以下命令来验证 Docker 是否安装成功:

arduino 复制代码
docker run hello-world

如果一切正常,你应该会看到一条欢迎消息,说明 Docker 已经成功安装并运行。

4. 创建和管理 Docker 容器

4.1 创建 Dockerfile

Dockerfile 是一个文本文件,包含了一系列命令,用于构建 Docker 镜像。以下是一个简单的 Dockerfile 示例:

bash 复制代码
# 使用官方的 Python 镜像作为基础镜像
FROM python:3.8-slim-buster

# 设置工作目录
WORKDIR /app

# 将当前目录下的所有文件复制到容器的 /app 目录下
COPY . .

# 安装依赖
RUN pip3 install -r requirements.txt

# 指定容器启动时运行的命令
CMD ["python3", "app.py"]

4.2 构建 Docker 镜像

在包含 Dockerfile 的目录中运行以下命令来构建 Docker 镜像:

perl 复制代码
docker build -t my-app .

4.3 运行 Docker 容器

使用以下命令来运行 Docker 容器:

arduino 复制代码
docker run -d -p 5000:5000 my-app

其中 ​​-d​​​ 表示后台运行,​​-p 5000:5000​​ 表示将宿主机的 5000 端口映射到容器的 5000 端口。

5. 使用 Docker Compose 管理多容器应用

5.1 创建 ​​docker-compose.yml​​ 文件

Docker Compose 允许你定义和运行多容器 Docker 应用程序。以下是一个简单的 ​​docker-compose.yml​​ 文件示例:

yaml 复制代码
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

5.2 启动 Docker Compose

在包含 ​​docker-compose.yml​​ 文件的目录中运行以下命令来启动所有服务:

复制代码
docker-compose up -d

其中 ​​-d​​ 表示后台运行。

6. 管理 Docker 容器和镜像

6.1 列出所有运行的容器

复制代码
docker ps

6.2 列出所有容器(包括停止的)

css 复制代码
docker ps -a

6.3 停止容器

arduino 复制代码
docker stop <container-id>

6.4 删除容器

bash 复制代码
docker rm <container-id>

6.5 列出所有镜像

复制代码
docker images

6.6 删除镜像

arduino 复制代码
docker rmi <image-id>

7. 高级配置

7.1 配置 Docker 网络

Docker 提供了多种网络驱动,可以根据需要选择合适的网络配置。例如,创建一个自定义网络:

lua 复制代码
docker network create my-network

然后在 ​​docker-compose.yml​​ 文件中使用该网络:

yaml 复制代码
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    networks:
      - my-network
  redis:
    image: "redis:alpine"
    networks:
      - my-network
networks:
  my-network:

7.2 使用 Docker Secrets

Docker Secrets 是一个用于存储和注入敏感数据(如密码、密钥等)的工具。例如,创建一个秘密:

bash 复制代码
echo "my-secret-value" | docker secret create my-secret -

然后在 ​​docker-compose.yml​​ 文件中使用该秘密:

yaml 复制代码
version: '3.1'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    secrets:
      - my-secret
secrets:
  my-secret:
    external: true

8. 实战案例

8.1 部署一个简单的 Web 应用

假设你有一个简单的 Flask 应用,目录结构如下:

perl 复制代码
my-flask-app/
├── app.py
├── requirements.txt
└── Dockerfile

其中 ​​app.py​​ 文件内容如下:

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

​requirements.txt​​ 文件内容如下:

ini 复制代码
Flask==1.1.2

​Dockerfile​​ 文件内容如下:

sql 复制代码
FROM python:3.8-slim-buster

WORKDIR /app

COPY . .

RUN pip3 install -r requirements.txt

CMD ["python3", "app.py"]

在 ​​my-flask-app​​ 目录中运行以下命令来构建和运行 Docker 容器:

perl 复制代码
docker build -t my-flask-app .
docker run -d -p 5000:5000 my-flask-app

打开浏览器,访问 ​​http://localhost:5000​​,你应该能看到 "Hello, World!" 消息。

9. 总结

通过以上步骤,你可以在本地计算机上成功安装和配置 Docker,并使用 Docker 来运行和管理应用程序。Docker 的强大之处在于其轻量级、可移植和高效的特点,使得开发者可以在任何支持 Docker 的环境中快速搭建和运行应用。希望这些步骤对你有所帮助,祝你在 Docker 学习和实践中取得成功!

相关推荐
WX-bisheyuange33 分钟前
基于Spring Boot的教师个人成果管理系统的设计与实现
java·spring boot·后端
chxii36 分钟前
spring boot 获取HTTP 请求参数
spring boot·后端·http
xunyan62342 小时前
面向对象(上)-封装性的引入
java·开发语言
脸大是真的好~2 小时前
黑马JAVAWeb-05 JDBC入门-预编译SQL-Mybatis入门-Mybatis日志输出-数据库连接池-增删改查-XML映射配置
java
还算善良_2 小时前
XML签名
xml·java·开发语言
梅梅绵绵冰2 小时前
xml方式实现AOP
xml·java·开发语言
桦说编程3 小时前
Guava 迭代器增强类介绍
java·后端·设计模式
235164 小时前
【JVM】Java为啥能跨平台?JDK/JRE/JVM的关系?
java·开发语言·jvm·spring boot·后端·spring·职场和发展
courtfu4 小时前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端
枫子有风4 小时前
Go语言流程控制
android·java·golang