# Docker

# 1. 安装

# 1.1. Windows 安装

  1. 下载安装 Docker🔗 (opens new window)

  2. 更换国内源

    在 Docker Seting 中修改 Doker Engine 的配置文件,在"registry-mirrors"配置中添加国内镜像,比如使用官方中国区https://registry.docker-cn.com

    "registry-mirrors":["https://registry.docker-cn.com"]
    
    1

    镜像

# 1.2. Linux 安装

  1. 安装 docker

    # 官方安装脚本
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    
    1
    2
  2. 使用 清华源方法🔗 (opens new window)

# 2. 配置使用

# 2.1. docker 架构

  1. 镜像 images: 相当于一个 root 文件系统
  2. 容器 container: 是镜像的运行时的实体,可以被创建、启动、停止、删除
  3. 仓库 repository: 可以看成代码控制中心,用来存储镜像

# 2.2. docker 使用

  1. 拉取(下载)镜像

    # 自动下载最新的 ubuntu
    docker pull ubuntu
    # 也可以指定版本
    docker pull ubuntu:20.04
    
    1
    2
    3
    4
  2. 创建并进入容器 ubuntu

    # 创建容器
    docker run -it ubuntu /bin/bash
    
    # 创建并进入容器
    docker run -it --name ubuntu1 ubuntu:18.04 /bin/bash
    
    # 进入已创建好的容器
    docker exec -it CONTAINER_ID /bin/bash
    
    1
    2
    3
    4
    5
    6
    7
    8
  3. 常用命令

    命令 功能
    docker -v 或 docker version 查看 docker 版本命令
    docker start [container_name] 运行容器
    docker attach [container_id] 进入容器
    docker exec -it [container_name] /bin/sh 在容器中开启一个交互模式的终端
    docker restart [container_id] 重启容器
    docker rm [container_name] 删除容器
    docker rm -f [container_name] 强制删除容器
    docker export [container_id] > *.tar 导出容器
    docker import - [container_name] < *.tar 导入容器
    docker commit [IMAGE_NAME]:[TAG] 容器保存成镜像
    docker rename [原容器名] [新容器名] 容器重命名
    docker save [IMAGE_ID] > *.tar 导出镜像
    docker load < *.tar 导出镜像
    docker tag [镜像 id] [新镜像名称]:[新镜像标签] 重命名镜像
    docker images 或 docker image ls 显示已抽取的镜像
    docker rmi [IMAGE_ID] 删除镜像
    docker ps 显示运行中的镜像
    docker ps -a 显示所有镜像
    exit 退出容器
  4. 安装 wget

    apt-get update
    apt-get install wget
    
    1
    2
  5. 容器自启动

    # 先查询容器 id
    docker ps -a
    # 将容器 id 放入自启动,可以同时放多个容器 id
    docker update --restart=always 容器 id
    
    1
    2
    3
    4
  6. 文件拷贝

    # 从本地拷贝到容器
    docker cp file_path CONTAINER_ID:path
    # 从容器拷贝到本地
    docker cp CONTAINER_ID:path file_path
    
    
    1
    2
    3
    4
    5
  7. 查看日志

    sudo docker logs [CONTAINER_ID]
    
    1

# 2.3. docker 安装 python 环境

  1. 以 django 项目为例,下拉 python 环境

    docker pull python:3.10.11
    
    1

    图 1

  2. 生成容器并进入

    # 生成 py310 容器并进入
    docker run -it --name py310 python:3.10.11 /bin/bash
    
    1
    2

# 2.4. docker 打包镜像

  1. 编写 Dockerfile

    # 基于的容器版本
    From python:3.7
    # 添加文件,即程序文件
    ADD . /project_folder
    # 工作路径
    WORKDIR /project_folder
    # 安装 Python 依赖包
    RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    RUN pip install -r ./project_folder/requirements.txt
    # 开放端口
    EXPOSE 8086
    # 程序运行
    CMD ["python", "./project_folder/manage.py", "runserver", "0.0.0.0:8086"]
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
  2. 编译

    # 注意最后面有个 `.`
    sudo docker build --no-cache -t "project_name" .
    # 或
    docker build -t project_name:v1.0 .
    
    1
    2
    3
    4
  3. 生成容器并运行

    sudo docker run -it -d -p 0.0.0.0:8086:8086 project_name:v1.0
    
    1
lastUpdate: 2/28/2024, 4:17:55 PM