Docker 常用命令
Favori,
图:network
Docker
Docker 是一个应用打包、分发、部署的工具,你也可以把它理解为一个轻量的虚拟机是运行环境和应用的集合
编写 dockerfile
FROM node:16
LABEL maintainer="favori"
# 复制代码
ADD . /app
# 设置容器启动后的默认运行目录
WORKDIR /app
# 运行命令,安装依赖
# RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
# 例如 RUN npm install && cd /app && mkdir logs
RUN npm install
# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
# 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
# 例如 CMD cd /app && ./start.sh
CMD npm run start
打包镜像
docker build -t test:v2 .
参数说明:
https://docs.docker.com/engine/reference/commandline/build/
启动镜像(实例化为容器)
docker run -p 8080:8080 --name test test:v2
docker run -p 8080:8080 --name test test:v2 -d
docker run --name repo alpine/git clone https://github.com/docker/getting-started.git
停止容器
停止某一个容器
docker stop test
停止所有容器运行:
docker stop $(docker ps -a -q)
删除所有停止运行的容器:
docker rm $(docker ps -a -q)
目录挂载
docker run -p 9090:8080 --name test-volumes -v /Users/yuanguandong/Desktop/github/code/docker/demoweb:/app -d test:v2
Docker-compose
通过 docker-compose.yml 拉起多个 docker 容器
要把项目依赖的多个服务集合到一起,我们需要编写一个 docker-compose.yml 文件,描述依赖哪些服务
参考文档:https://docs.docker.com/compose/
version: "3.7"
services:
app:
build: ./
ports:
- 80:8080
volumes:
- ./:/app
environment:
- TZ=Asia/Shanghai
redis:
image: redis:5.0.13
volumes:
- redis:/data
environment:
- TZ=Asia/Shanghai
volumes:
redis:
在 docker-compose.yml 文件所在目录,执行:
docker-compose up
就可以跑起来了。
命令参考:https://docs.docker.com/compose/reference/up/
在后台运行只需要加一个 -d 参数
docker-compose up -d
查看运行状态:
docker-compose ps
停止运行:
docker-compose stop
重启:
docker-compose restart
重启单个服务:
docker-compose restart service-name
进入容器命令行:
docker-compose exec service-name sh
查看容器运行
log:docker-compose logs [service-name]
进入容器终端
docker exec -it test-v bash
复制文件到容器
docker cp fromPath container:targetPath
常见参数
-i : 让容器的标准输入保持打开
-t : 让 docker 分配一个伪终端并绑定到容器的标准输入上