Docker学习记录

64 阅读2分钟

用于前端项目自动化部署,比较片面。

一、image镜像

  • 下载镜像 docker pull <image-name>:<tag>
  • 查看所有镜像 docker images
  • 删除镜像 docker rmi <image-id>
  • 纯净镜像源 docker image prune
  • 上传镜像 docker push <username>/<repository>:<tag> ps;如果docker images出现repository是的情况,可以运行docker image prune删除

二、container

  • 启动容器 docker run -p xxxx:xxxx -v=hostPath:containerPath -d --name <container-name> <image-name>
    • -p 端口映射
    • -v 数据卷,文件映射
    • -d 后台运行
    • -- name 定义容器名称
  • 查看所有容器 docker ps,加 -a 显示隐藏容器
  • 停止容器 docker stop <container-id>
  • 启动容器 docker start <container-id>
  • 删除容器 docker rm <container-id>,加 -f 是强制删除
  • 查看容器信息,如IP地址 docker inspect <container-id>
  • 查看容器日志 docker logs <container-id>
  • 进入容器控制台 docker exec -it <container-id> /bin/sh

三、功能演示

以nginx为例。

    docker run -d -p 81:80 --name nginx1 nginx

四、Dockerfile

    FROM node:14
    
    # 临时创建工作文件夹
    WORKDIR /app
    
    # 将当前目录下的所有文件拷贝到/app下
    COPY . /app
    
    # 构建应用的一些步骤,安装依赖之类的,配置
    RUN xxx
    RUN npm set registry https://registry.npm.taobao.org
    RUN npm install
    
    # 启动容器,容器启动命令
    # CMD xxx
    CMD npm run start
    
    # 环境变量
    ENV K=v1
    ENV NODE_ENV=v1

构建镜像

    docker build -t react-project .  
    // . 指当前目录下
    
    docker images 
    // 查看构建完成的镜像
    
    docker run -p 8090:3000 -d --name xxx react-project

五、docker-compose

一个配置文件,启动所有的运行环境。在项目根目录下创建 docker-compose.yml 文件。

version: '3.1'
services:
  reactProject:
    build:
        context: . # 当前目录
        dockerfile: Dockerfile # 基于 Dockerfile 构建
    image: react-project
    container_name: react-project # docker容器的名字
    ports:
        - 8090:3000
    
  mysql:
    image: mysql # 原镜像`mysql:5.7`
    container_name: test-mysql # 容器名为'mysql'
    restart: always # 指定容器退出后的重启策略为始终重启
    volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
      - /Users/jason/my-project/mysql-data/logs:/var/log/mysql
      - /Users/jason/my-project/mysql-data/data:/var/lib/mysql
      - /Users/jason/my-project/mysql-data/conf:/etc/mysql
      - /Users/jason/my-project/mysql-data/mysql-files:/var/lib/mysql-files
    environment: # 设置环境变量,相当于docker run命令中的-e
      #  TZ: Asia/Shanghai
      #  LANG: en_US.UTF-8
      MYSQL_ROOT_PASSWORD: xxx # 设置root用户密码
      MYSQL_DATABASE: xxx
    ports: # 映射端口
      - 3306:3306

构建命令:

  • 构建容器 docker-compose build <name>
  • 启动所有的服务器 docker-compose up -d 后台启动
  • 停止所有的服务 docker-compose down
  • 查看所有的服务 docker-compose ps