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