docker - 01


前言

介绍docker常用命令


一、名词解释?

  • 镜像
    对比类
  • 容器
    对比类的实例

eg: 类比: const person = new Person()
person => 容器
Person => 镜像


二、配置容器

1、创建 Dockerfile 文件
# 基础镜像版本
FROM node:18-alpine3.15
# 工作目录
WORKDIR /egg
# 从本机当前文件夹复制到镜像egg中    '.' => 表示当前目录 相对地址 
COPY package.json .
# 执行运行命令
RUN  npm install
# 复制剩余所有构建的必须文件
# 忽略 node_modules
# 需要创建 .dockerignore文件,剔除不需要复制的文件 
# 分开两个COPY  是因为实际项目中package.json 文件很少变动, 下次构建的时候可以使用docker的缓存
COPY . .
# 暴露容器的端口号, 和本地项目的端口号不同,是两个项目,只起文档作用,让人知道镜像使用的端口是多少
EXPOSE 3000
# 构建
CMD ["npm", "run", "dev"]

2、创建 .dockerignore
# 剔除nodule_modules
node_modules
# 剔除掉 Dockerfile
Dockerfile
# 剔除 .dockerignore
.dockerignore


三、容器操作

1、构建镜像
docker build .
2、发布镜像到docker hub 仓库
# 1、登录docker hub
docker login
# 发布,需要在hub创建一个同名仓库
docker push docker-test-image:v1.0
# 拉取远程镜像
docker pull docker-name
3、构建镜像
# 构建带名称和版本的镜像(也可以不带,不带默认名称及版本都为none) '.'表示相对地址,当前目录,和Dockerfile 同级
docker build -t docker-name:v1.0 .
# 给没有名称的镜像命名(通过 docker build .   构建的镜像名称默认为None)
docker tag imageId docker-name:v1.0
4、删除镜像
# -f(force) 强制删除,可删除正在运行中的镜像 镜像名称格式 name:version
docker rmi -f docker-name:v1.0
5、运行镜像
# -d 表示容器在后台运行,不占用命令行
# -p 表示映射端口 主机端口/容器端口(可以不同) 访问主机端口的时候会访问到容器的端口
# --name 自定义容器名称
# -v(volumes) 主机文件夹:容器文件夹  这样可以绑定两边的文件夹,文件变动可以联动,一边变化,另一边也会相应变化
# -v 如果只提供了一个容器文件地址,则表示容器里面的某系文件/文件夹是不能进行同步的
# eg: -v /containerFolder/node_modules 表示node_modules文件夹不能进行同步
# 如果容器有新增的文件或文件夹,那么本地也会同步新增,解决提问题只需让本地文件设为只读,可以在文件绑定的后面添加 :ro 表示只读
 docker run -d -v $PWD:/containerFolder:ro -v /containerFolder/node_modules -p 3000:3000 --name container-name docker-name:version
6、查看当前运行的容器
# -a 可以查看所有的容器,包括暂停运行的
docker ps
7、暂停容器的运行
docker stop containerId
8、删除(销毁)不需要的容器
# -f 强制移除在运行中的容器
# -v 同步删除volumes
docker rm -fv containerId
9、进入正在运行的容器
# -i  可交互模式
# -t 以终端交互的模式
docker exec -it container-name /bin/sh
10、重启容器
docker restart container-name
11、容器日志
# 查看容器启动日志
bash logs container-name

四、docker-compose

简介:将容器操作命令配置成一个文件,简化过长的命令行
# 在 Dockerfile 同级目录创建 docker-compose.yml 文件
touch docker-compose.yml

1、配置docker-compose.yml

# compose 版本
version: "3.8"
# 每个容器都需要在services 下声明
services:
# 容器名称
  nodejs-container:
	# 根据当前文件夹进行构建, docker引擎就会去找当前目录下的 Dockerfile 来构建镜像
    build: .
    # 端口映射 主机端口:容器端口
    ports:
      - "3000:3000"
    # volumes 相对地址
    volumes:
      - ./:/egg:ro
      - /egg/node_modules

2、运行docker-compose

# -d 在后台运行容器,不占用当前命令行
# --build 如果镜像有修改,docker-compose 就会重建, 如果不加上--build,下次就会使用之前的缓存。 docker-compose 的坑之一,谨记!!!
docker-compose up -d --build
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值