安装配置
nano /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io"
],
"runtimes": {
"sysbox-runc": {
"path": "/usr/bin/sysbox-runc"
}
},
"bip": "172.20.0.1/16",
"default-address-pools": [
{
"base": "172.25.0.0/16",
"size": 24
}
]
}
systemctl daemon-reload
systemctl restart docker
# 安装
apt install docker.io
# 换源
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
# 重启服务
systemctl daemon-reload
systemctl restart docker
核心命令
镜像操作
docker images # 查看镜像
docker search 镜像名 # 搜索镜像
docker pull 镜像名:标签 # 拉取镜像
docker rmi 镜像ID # 删除镜像
docker rmi `docker images -q` # 删除所有镜像
容器操作
docker ps # 查看运行中容器
docker ps -a # 查看所有容器
docker run -it --name=容器名 镜像名 /bin/bash # 交互式启动
docker run -di --name=容器名 镜像名 # 后台启动
docker exec -it 容器名 /bin/bash # 进入容器
docker stop/start 容器名 # 停止/启动容器
docker rm 容器名 # 删除容器
docker cp 文件 容器名:路径 # 复制文件
常用参数
-i: 交互式-t: 终端-d: 后台运行-p 8080:80: 端口映射-v /host:/container: 目录挂载--name: 容器名称-e KEY=VALUE: 环境变量
应用部署
数据库
# MySQL
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密码 mysql:5.7
# Redis
docker run -di --name=redis -p 6379:6379 redis
# PostgreSQL
docker run -di --name=postgres -p 5432:5432 -e POSTGRES_PASSWORD=密码 postgres:13
Web服务
# Nginx
docker run -di --name=nginx -p 80:80 -v /usr/local/nginx:/etc/nginx nginx
# Tomcat
docker run -di --name=tomcat -p 8080:8080 tomcat:9
Dockerfile
基本结构
FROM node:16-alpine # 基础镜像
WORKDIR /app # 工作目录
COPY package*.json ./ # 复制文件
RUN npm install # 安装依赖
COPY . . # 复制代码
EXPOSE 3000 # 暴露端口
CMD ["node", "app.js"] # 启动命令
常用指令
FROM: 基础镜像WORKDIR: 工作目录COPY: 复制文件ADD: 复制文件(支持解压)RUN: 执行命令ENV: 环境变量EXPOSE: 暴露端口CMD: 启动命令ENTRYPOINT: 入口点
构建镜像
docker build -t 镜像名:标签 .
docker build -f Dockerfile文件 -t 镜像名 .
Docker Compose
基本格式
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
- db
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=密码
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
常用命令
docker-compose up -d # 后台启动
docker-compose down # 停止删除
docker-compose up -d --build # 重新构建启动
docker-compose logs # 查看日志
docker-compose exec web bash # 进入容器
docker-compose ps # 查看状态
备份迁移
# 容器保存为镜像
docker commit 容器名 新镜像名
# 导出镜像
docker save -o 镜像.tar 镜像名
# 导入镜像
docker load -i 镜像.tar
Docker-compose V2
最近一直打算把网站打包,用docker-compose部署,发现docker-compose更新了于是补一个ubuntu安装docker-compose v2的步骤
# 1. 下载最新稳定版 Compose V2(Linux x86_64 架构,适配绝大多数服务器)
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 2. 给二进制文件添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 3. (可选)创建软链接,确保系统能全局识别命令(部分系统需要)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 4. 验证安装是否成功(显示 V2 版本即可,比如 v2.29.2)
docker-compose --version