Docker 使用

1. Docker基础概念

  • Image:Image是将运行的程序以及依赖等文件打包在一起。是程序的运行环境。
  • Container:Container是Image运行后形成的进程,一个Image可以创建1个或多个Container,每个Container之间是相互隔离的。

2. Docker image下载

  • 下载指定平台的docker image
sudo docker pull --platform linux/amd64 openjdk:21-jdk-slim`
  • 当一个笔记本上的容器存在多个平台下的版本时,需要使用tag来进行区分
# 拉取 amd64 版本
docker pull --platform linux/amd64 mysql:latest
docker tag mysql:latest mysql:amd64

# 拉取 arm 版本
docker pull --platform linux/arm64 mysql:latest
docker tag mysql:latest mysql:arm

3. Docker 指令

启动

`sudo docker run -it --name myapp-container -p 8080:8080 myapp:latest /bin/bash`

开机自启动

  • 打开开机自启动
sudo docker update --restart=always 容器名字或ID
  • 关闭开机自启动
sudo docker update --restart=no 容器名字或ID
  • 指定最大重启次数
sudo docker update --restart=on-failure:3 容器名或ID
  • 查询容器自启动状态
sudo docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" 容器名或ID

4. Docker compose

version: "3.8"
services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ****** # 设置root用户的密码
      MYSQL_USER: userName # 创建一个新用户
      MYSQL_PASSWORD: userName # 用户的密码
    ports:
      - "3306:3306" # 映射MySQL端口到宿主机的3306端口

5. Docker 部署

  1. 本地保存Docker
sudo docker save -o java21_x64.tar java21_x64:latest
  1. 上传文件到服务器
scp ****
  1. 服务器端加载docker
`sudo docker load -i java21_x64.tar`