Docker是大型架构核心,下面我详解Docker开发命令@mikechen
一、docker run:启动容器(最核心命令)
命令
docker run [参数] 镜像
示例
启动Redis:
docker run -d \
--name redis \
-p 6379:6379 \
redis
参数说明:
| 参数 | 作用 |
|---|---|
| -d | 后台运行 |
| –name | 容器名称 |
| -p | 端口映射 |
执行后:
宿主机6379
↓
Docker容器
↓
Redis6379
启动Spring Boot服务
docker run -d \
--name user-service \
-p 8080:8080 \
user-service:v1
效果:
用户请求
↓
8080端口
↓
Spring Boot容器
二、docker ps:查看运行容器
命令
查看运行中的容器:
docker ps
示例:
CONTAINER ID IMAGE
a12345 redis
b67890 mysql
查看所有容器:
docker ps -a
包含:
- 正在运行
- 已停止
开发场景:
服务启动失败:
docker ps -a
↓
查看状态
三、docker images:查看镜像
Docker运行基础:
镜像 Image
↓
创建
↓
容器 Container
命令:
docker images
结果:
REPOSITORY
TAG
user-service
v1
mysql
8.0
常见操作:
查看本地有哪些镜像:
docker images
删除无用镜像:
docker rmi image-id
四、docker build:构建镜像
开发过程中:
代码
↓
Dockerfile
↓
镜像
Dockerfile
示例:
FROM openjdk:17
COPY app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
构建:
docker build -t user-service:v1 .
参数:
| 参数 | 作用 |
|---|---|
| -t | 镜像名称 |
| . | 当前目录 |
生成:
user-service:v1
企业流程:
Java代码
↓
Maven打包
↓
docker build
↓
生成镜像
↓
上传仓库
↓
K8S部署
五、docker logs:查看容器日志
微服务排障最高频命令。
查看日志
docker logs 容器名
示例:
docker logs user-service
输出:
Spring Boot Started
Mysql Connected
Redis Connected
实时查看:
docker logs -f user-service
类似:
tail -f application.log
查看最近100行:
docker logs --tail 100 user-service
应用:
接口500:
请求失败
↓
docker logs
↓
定位异常
六、docker exec:进入容器内部
类似:
SSH登录服务器
命令:
docker exec -it 容器 bash
示例:
进入Redis:
docker exec -it redis bash
进入:
root@container#
可以执行:
查看文件:
ls
查看进程:
ps -ef
测试网络:
curl localhost:8080
开发调试:
服务异常
↓
进入容器
↓
检查环境
七、docker stop:停止容器
命令
docker stop 容器名
示例:
docker stop redis
效果:
运行状态
↓
停止
启动:
docker start redis
常见:
开发环境:
启动项目
↓
stop
↓
修改配置
↓
start
八、docker rm:删除容器
命令
docker rm 容器名
示例:
docker rm redis
强制删除:
docker rm -f redis
注意:
删除容器:
Container
不会删除:
Image
关系:
Image镜像
↓ docker run
Container容器
↓ rm
删除容器
九、docker cp:复制文件
开发调试非常常用。
宿主机复制到容器
命令:
docker cp 文件 容器:路径
示例:
docker cp config.yml user-service:/app/
容器复制到宿主机
docker cp user-service:/app/log.txt .
应用:
- 修改配置文件
- 导出日志
- 获取生成文件
十、docker network:容器网络管理
微服务环境:
订单服务
↓
用户服务
↓
Redis
↓
MySQL
依赖Docker网络。
查看网络:
docker network ls
创建网络:
docker network create app-net
启动容器加入网络:
docker run \
--network app-net \
redis
效果:
容器之间:
user-service
|
app-net
|
redis
可以通过容器名访问:
redis:6379