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 学习和实践中取得成功!

相关推荐
007php0073 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠3 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶3 小时前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker
顾漂亮3 小时前
JVM底层攻坚
java·jvm·spring
编程岁月3 小时前
java面试-0215-HashMap有序吗?Comparable和Comparator区别?集合如何排序?
java·数据结构·面试
William_cl3 小时前
ASP.NET MVC 前置基础:宿主环境 & HttpRuntime 管道,从部署到流程拆透(附避坑指南)
后端·asp.net·mvc
IT_陈寒3 小时前
Vue3性能优化实战:这7个技巧让我的应用加载速度提升50%!
前端·人工智能·后端
小宁爱Python3 小时前
Django Web 开发系列(一):视图基础与 URL 路由配置全解析
后端·python·django
木井巳3 小时前
[Java数据结构与算法]详解排序算法
java·数据结构·算法·排序算法