Docker 常用命令

其他文档笔记地址

(云原生开发)

容器基本命令

查看当前运行的容器

1
docker ps

进入已经运行的容器

1
docker exec -it <容器ID或容器名> <终端类型>

删除历史容器

1
docker container prune

Dockerfile生成镜像

1
docker build -t 镜像名字:tag .

停止所有容器

1
docker stop $(docker ps -q)

删除所有停止的容器

1
docker rm $(docker ps -aq --filter "status=exited")

停止所有容器

1
docker stop $(docker ps -q)

MySql相关

单独运行mysql:8.0 镜像

1
docker run -d  --name mysql-server  -p 3306:3306   -v /data/mysqldata:/var/lib/mysql   -v /conf/mysqlconf:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=djx55707   mysql:8.0  

Docker中mysql创建库表

1
2
3
4
5
6
7
# 进入容器的 MySQL 终端
docker exec -it mysql-server mysql -u root -p
# 输入密码后,在 MySQL 终端执行
CREATE DATABASE IF NOT EXISTS mydata;

#选择库
USE mydata

redis相关

单独启动redis:8.0镜像

1
docker run  -d  -p 6379:6379  -v /conf/redisconf:/usr/local/etc/redis  -v /data/redisdata:/data --name myredis redis:8.0 redis-server /usr/local/etc/redis/redis.conf

使用compose管理启动

docker-compose.yml文件配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
version: '3.8'
#数据库不想暴露端口给外部就去掉port:
services:
# Redis服务
redis:
image: redis:8.0
container_name: myredis
restart: always
ports:
- "6379:6379"
volumes:
- /conf/redisconf:/usr/local/etc/redis
- /data/redisdata:/data
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- my-network

# MySQL服务
mysql:
image: mysql:8.0
container_name: mysql-server
restart: always
ports:
- "3306:3306"
volumes:
- /data/mysqldata:/var/lib/mysql
- /conf/mysqlconf:/etc/mysql/conf.d
environment:
MYSQL_ROOT_PASSWORD: djx55707
networks:
- my-network

# Spring Boot应用
app:
build: .
container_name: probationwork-app
restart: always
ports:
- "8080:8080"
depends_on:
- mysql
- redis
networks:
- my-network

networks:
my-network:
driver: bridge

使用docker-compose.yml文件启动容器

1
docker-compose up -d

停止启动的所有容器

1
docker compose down

Dockerfile文件

1
2
3
4
5
6
7
8
9
FROM openjdk:24-jdk-slim
WORKDIR /app

ADD probationwork-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080

ENV JWT_KEY="jhwork"

ENTRYPOINT ["java", "-jar", "app.jar"]

Docker环境配置

优先级关系:

  1. docker-compose.yml中直接定义的environment最高
  2. 通过.env引入的次之
  3. Dockerfile中的ENV最低

最佳实践:

  • 敏感信息放.env(不提交到Git)
  • 通用配置放docker-compose.yml
  • 镜像默认值放Dockerfile