分类
Docker
软件工具
2026-08-06
5

介绍

Docker是一个开源的容器化平台,它让你能把应用程序及其所有依赖(代码、运行环境、配置)打包成一个“标准集装箱”,从而在任何装有Docker的服务器上无缝运行

解决什么实际问题

  • 环境不一致
  • 微服务架构
  • 快速部署

官网

https://www.docker.com/

CentOS安装

yum install docker

调整国内镜像源,编辑/etc/docker/daemon.json

{
  "registry-mirrors": ["https://32xw0apq.mirror.aliyuncs.com"]
}

ubuntu安装

# 1. 更新软件包索引
sudo apt update

# 2. 安装 Docker(Ubuntu 官方维护的版本)
sudo apt install -y docker.io

# 3. 将用户加入 docker 组(避免 sudo)
sudo usermod -aG docker $USER
newgrp docker  # 或重新登录终端

# 4. 验证安装
docker --version
sudo systemctl start docker
sudo docker run hello-world

镜像下载地址

官方镜像下载地址

查看镜像:docker images

安装 docker-compose 插件

# 1. 安装 docker-compose-plugin
apt update
apt install docker-compose-plugin -y

# 2. 验证安装
docker compose version

# 3. 使用命令(注意是空格,不是横杠)
docker compose up -d

容器操作

# 镜像查看
docker images

# 停止
docker stop id
# 查看所有容器(已停止)
docker ps -as
# 启动
docker start id
# 删除
docker rm -f name

检查容器是否正常运行
docker-compose ps

清理孤儿容器
docker-compose down --remove-orphans

配置加速

创建 Docker 配置文件

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

重启 Docker
sudo systemctl restart docker

测试
sudo docker run hello-world

MySQL安装

MySQL镜像地址

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

注意:实际生产环境不建议使用默认端口

使用docker ps看已安装镜像

Redis安装

Redis镜像地址

docker pull redis
docker run --name redis -p 6379:6379 -d redis --requirepass 123456

注意:实际生产环境不建议使用默认端口

Mongo安装

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

设置密码

# 进入容器,打开mongo,admin身份进入
docker exec -it mongo mongo admin
# 授权
db.createUser({user:'admin',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'}]});

Nacos服务端安装

nacos镜像地址

docker run --name nacos-quick -e MODE=standalone -p 8849:8848 -d nacos/nacos-server:2.0.2

访问ip:端口/nacos

Sentinel-Dashboard

Sentinel-Dashboard镜像地址

arch配置代理

/etc/docker/daemon.json

{
        "proxies": {
                "http-proxy": "http://127.0.0.1:7890",
                "https-proxy": "http://127.0.0.1:7890"
        }
}

打包迁移到其他服务器

在源服务器上保存所有CompreFace相关的Docker镜像
sudo docker save -o compreface-fe.tar exadel/compreface-fe:1.2.0
sudo docker save -o compreface-admin.tar exadel/compreface-admin:1.2.0
sudo docker save -o compreface-api.tar exadel/compreface-api:1.2.0
sudo docker save -o compreface-postgres-db.tar exadel/compreface-postgres-db:1.2.0
sudo docker save -o compreface-core.tar exadel/compreface-core:1.2.0

将生成的.tar文件传输到目标服务器
scp compreface-*.tar user@new-server:/path/to/destination/

在目标服务器上加载这些Docker镜像
sudo docker load -i compreface-fe.tar
sudo docker load -i compreface-admin.tar
sudo docker load -i compreface-api.tar
sudo docker load -i compreface-postgres-db.tar
sudo docker load -i compreface-core.tar

在新服务器上
docker run
或
sudo docker-compose up -d

docker-compose.yml

version: '3'

services:
  compreface-postgres-db:
    image: exadel/compreface-postgres-db:1.2.0
    container_name: compreface-postgres-db
    ports:
      - "5432:5432"

  compreface-core:
    image: exadel/compreface-core:1.2.0
    container_name: compreface-core
    depends_on:
      - compreface-postgres-db
    ports:
      - "3000:3000"

  compreface-api:
    image: exadel/compreface-api:1.2.0
    container_name: compreface-api
    depends_on:
      - compreface-core
    environment:
      - API_JAVA_OPTS=-Xmx2g

  compreface-admin:
    image: exadel/compreface-admin:1.2.0
    container_name: compreface-admin
    depends_on:
      - compreface-core
    environment:
      - ADMIN_JAVA_OPTS=-Xmx1g

  compreface-ui:
    image: exadel/compreface-fe:1.2.0
    container_name: compreface-ui
    ports:
      - "8000:80"
    depends_on:
      - compreface-api
      - compreface-admin

MySQL

docker run -d \
  --name mysql-8.4 \
  --restart=always \
  -p 3306:3306 \
  -v /app/mysql8.4/data:/var/lib/mysql \
  -v /app/mysql8.4/conf:/etc/mysql/conf.d \
  -v /app/mysql8.4/logs:/var/log/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.4.10 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

# 进入 MySQL
docker exec -it mysql-8.4 mysql -uroot -p

# 创建远程访问用户
CREATE USER 'appuser'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
目录
统计
23
分类
218
文档
7
坚持