本文最后更新于 2024-05-26T14:41:18+08:00
docker 学习笔记 1. 基础教程 参考教程:
菜鸟入门Docker
Docker 封装anaconda环境,生成镜像并打包1
Docker 封装anaconda环境,生成镜像并打包2
Docker 菜鸟教程
2. docker镜像准备 下载基础镜像 1 docker pull ubuntu:18.04
制作镜像 编写Dockerfile文件,内容示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 # 使用官方的 Python 3.8 镜像作为基础镜像 FROM python:3.8# 安装 wget RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/*# 下载 Miniconda 安装脚本 RUN wget -q[https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh](https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh) -O miniconda.sh# 安装 Miniconda RUN bash miniconda.sh -b -p /opt/miniconda && rm miniconda.sh# 初始化 Conda RUN /opt/miniconda/bin/conda init bash# 创建新的 Conda 环境 ENV CONDA_ENV=myenv RUN conda create -y --name $CONDA_ENV python=3.8# 激活 Conda 环境 RUN echo "conda activate $CONDA_ENV" >> ~/.bashrc# 安装所需的包 RUN conda install -y -n $CONDA_ENV numpy pandas matplotlib# 设置容器内的工作目录 WORKDIR /usr/src/app# 设置容器启动时的命令 CMD ["/bin/bash"]
构建镜像 1 docker build --network host -t mirrors.tencent.com/star_library/tlinux-64bit-python3.6:0415 .
推送镜像 1 2 3 4 5 6 7 8 9 10 # 以下方括号内容为需要根据实际需求替换的字符串 # 登录至软件源docker registry,[user]为OA账号名,[token]为软件源系统分配,可以通过【快捷指令】获取 sudo docker login --username [user] --password [token] mirrors.tencent.com # push镜像至软件源docker registry,[image_id]即docker镜像的id ,可以通过sudo docker image list命令查看 sudo docker tag [image_id] mirrors.tencent.com/[namespace]/[repo]:[tag] sudo docker push mirrors.tencent.com/[namespace]/[repo]:[tag] 如 docker push mirrors.tencent.com/gethinhu/tlinux-64bit-python3.6:0415
3. 调试 为了保证调试时训练程序运行环境与线上实际的运行环境一致,需要在开发机上用与线上相同的docker镜像启动容器
为了方便,平台也准备了一个脚本run_docker.sh,可以从附件下载使用。使用方法:
注意:
如果报错‘run_docker.sh : command not found’,请检查/usr/local/bin是否包含在$PATH里,如果没有,将其加入$PATH。
如果报错‘docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].’,是因为开发机没安装nvidia-docker,可以联系O2000(Oteam统一技术支持)解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 # 1. 编写run_docker.sh # 示例 #!/bin/bash image_full_name=$1 if [ -z ${image_full_name} ] then echo "mirrors.tencent.com/lllzheng/cuda11.8-ubuntu20.04:0511 \n" exit 0 fi cmd=$2 if [ -z "${cmd}" ] then echo "cd /apdcephfs/private_lllzheng/taiji/peg-in-hole-6D/ \n" echo "conda activate mujoco \n" echo "python3 /apdcephfs/private_lllzheng/taiji/peg-in-hole-6D/try_train.py \n" exit 0 fi echo ${image_full_name} echo ${cmd} docker run -it --gpus all --network=host --name test -v /apdcephfs/:/apdcephfs/private_lllzheng ${image_full_name} ${cmd} #如果docker -v版本小于19.03,请使用以下docker run命令 #docker run -it -e NVIDIA_VISIBLE_DEVICES=all --network=host -v /apdcephfs/:/apdcephfs/ ${image_full_name} ${cmd} # sudo bash run_docker.sh mirrors.tencent.com/lllzheng/cuda11.8-ubuntu20.04:0511 /bin/bash -c "cd /apdcephfs/private_lllzheng/taiji/peg-in-hole-6D/ && conda activate mujoco && python3 /apdcephfs/private_lllzheng/taiji/peg-in-hole-6D/try_train.py"# 2. 运行run_docker.sh chmod +x run_docker.sh run_docker.sh ${image_full_name} ${cmd} eg:run_docker.sh mirrors.tencent.com/star_library/g-tlinux2.2-python3.6-cuda9.0-cudnn7.6-tf1.12:latest /bin/bash -c "python3.6 /apdcephfs/private_gethinhu/mnist_trainer/fully_connected_feed.py --train_dir /apdcephfs/share_986015/mnist_dataset/ --max_steps 100000 --batch_size=1000"