项目封装
-
安装docker
-
导出程序依赖包
pip freeze > requirements.txt
pip list --format=freeze > requirements.txt
conda list -e > requirements.txt
conda install --yes --file requirements.txt
# 根据requirements下载离线依赖包
pip download -d require -r requirements.txt
# 复制require目录和requirements.txt 到新机器,在所在目录执行命令安装:
pip install --no-index --find-links=require -r requirements.txt
-
编写dockerfile
基于的基础镜像
FROM python:3.5.3
维护者信息
MAINTAINER name name@163.com
代码添加到code文件夹
ADD ./docker_test /code
设置code文件夹是工作目录
WORKDIR /code
安装支持
RUN pip install -r requirements.txt
CMD ["python", "/code/Main.py"]
-
制作镜像
docker build -t imagename(镜像名) Dockerfilepath(Dockerfile路径)
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.”
docker build -t d_t .
-
docker运行
docker run -d --name c_name(容器名) imagename(镜像名)
# 创建镜像
docker build -t image_name .
# 创建容器并运行容器 如果需要启用gpu,需要在宿主机安装nvidia-docker2
docker run --gpus all -it --name container_name image_name /bin/bash
docker run --gpus all --name container_name image_name
# -v 为映射宿主机文件夹
docker run --gpus all \
--shm-size 32g \
-it \
-v ./:/workspace \
--name edge_connect_run 06ae3a21dedb /bin/bash
docker run -it \ # 交互模式运行
--gpus '"device=0,1"' | all \ # 制定挂载的GPU
--shm-size 32g \ # 设置共享内存
--mount type=bind,source=/ssd1t/song/Datasets/coco,target=/master_data \ # 设置挂载硬盘
adenialzz/bilibili-projects:tch-mmdet-py38-tch19
-v /host/dir:/docker/dir
--user <root> # 指定用户
-e ENV_VISION=1.0.0
--entrypoint CMD
--name edge_connect_run 06ae3a21dedb /bin/bash
-
导出
# 导出镜像为文件
# 保存一个:
docker save 0fdf2b4c26d3 > hangge_server.tar
# 保存多个:
docker save -o images.tar postgres:9.6 mongo:3.4
# 导出容器为镜像
docker export ebcdfbecbb27(容器id) > yolov8l-train-v1.0.tar(镜像文件名)
-
导入
# 导入镜像 对应export
docker import my_ubuntu_v3.tar runoob/ubuntu:v4
# 载入镜像 对应save
docker load < hangge_server.tar
-
常用指令
# 查看容器信息
docker inspect ca_peerOrg1(容器名称)
docker inspect 容器名称
# 进入命令行模式
docker exec container_id -it /bin/bash
# 运行容器并进入命令行
docker run --gpus all -it --name container_name image_name /bin/bash
# 查看容器运行日志
docker logs container_id
# 容器与宿主机之间拷贝数据
docker cp /host/path/ container_id:/path/to/copy # 宿主机到容器
docker cp container_id:/path/to/copy /host/path/ # 容器到宿主机
# 将容器中的修改更新到镜像
docker commit -c "ENTRYPOINT /run.sh" container_id <image_name>:<new_tag>
-
注意事项
-
容器无法启用GPU:
-
需要在宿主机中安装nvidia-docker2
-
-