赞
踩
傻瓜式安装,最省心,容器不需要GPU支持可采用这种方法:
sudo snap install docker
普通安装,参照https://docs.docker.com/engine/install/ubuntu/
pipreqs ./
# 第一阶段,基于的基础镜像
FROM python:3.9-buster as builder-image
# 安装支持
COPY requirements.txt .
RUN pip3 install -i https://pypi.mirrors.ustc.edu.cn/simple --trusted-host https://pypi.mirrors.ustc.edu.cn --default-timeout=60 --no-cache-dir -r requirements.txt
# 第二阶段,将安装的包拷贝过来. 因为用不到python中所有的功能,可以选择一个稍微小一点的基础镜像,压缩最终镜像大小。
FROM python:3.9-slim-buster
COPY --from=builder-image /usr/local/bin /usr/local/bin
COPY --from=builder-image /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
# 指定镜像中的工作目录
WORKDIR ./docker_demo
#ADD <源路径> <目标路径>。使用ADD指令可以将构建上下文目录中的源路径目录复制到镜像内的 <目标路径> 位置。第一个参数“.”代表Dockerfile所在的目录,即python项目dockerdemo下所有的目录(不包括docker_demo自身)。第二个参数“.”代表镜像的工作目录
ADD . .
CMD ["python", "./src/main.py"]
slim:通常只安装运行特定工具所需的最小包
buster: 表示使用debian 10的系统,与之对应的是stretch, debian 9的系统, jessie, debian 8 的系统
Alphine: 专门为容器构建的操作系统,更小,但是经常会出问题,不建议
docker build -t [镜像名:版本号] .
# 也可不加版本号,直接写镜像名
# 查看image
sudo docker images
# 新建容器,并运行image
sudo docker run [镜像ID:版本号]
# 删除image
sudo docker rmi [镜像ID]
例如,想寻找一个打包了openfoam软件的镜像,并拉取到本地使用
docker search openfoam
docker pull 镜像名
sudo docker images
sudo docker ps -a
sudo docker rmi 镜像ID
sudo docker rm 容器ID
sudo docker rm $(sudo docker ps -qf status=exited)
sudo docker run -it [镜像ID] /bin/bash
# 如需指定容器名称,用--name
sudo docker run --name 容器名 镜像ID
# 如需指定共享宿主机网络给容器
sudo docker run -itd --name=容器名 --network=host 镜像ID
退出,exit或ctrl+D
启动/停止容器、进入已启动容器
用root身份进入已启动的容器
注意这里用的是[容器ID],不是镜像ID
sudo docker start/stop [容器ID]
docker exec -it [容器ID] /bin/bash
docker exec -u root -t -i container_id /bin/bash
注意这里用的是[容器ID],不是镜像ID
# docker cp 容器名:文件在容器的路径 宿主机路径
docker cp [容器ID]:/docker_demo/src/filename /home/
# docker cp 文件路径 容器名:容器里对应路径
docker cp filename [容器ID]:/docker_demo/src/
首先,安装x11-xserver-utils,ubuntu20.04自带不需要安装
sudo apt-get install x11-xserver-utils
其次,生成容器并进入容器终端,–net=host 必须加,否则无法正常显示
sudo docker run -it -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host --name of9ui f486261c8359 /bin/bash
需要先安装docker19或以上版本,并安装显卡驱动。然后安装nvidia-container-toolkit(运行下述代码安装)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
最后,生成容器,需要添加参数gpus=all
sudo docker run -it -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host --gpus=all --name of9ui f486261c8359 /bin/bash
测试是否成功:
docker run --help | grep -i gpus
运行nvidia官方提供的测试gpu的镜像:
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像。
docker save test -o test.tar
docker save 0fdf2b4c26d3 > test.tar
docker load -i test.tar
docker load < test.tar
docker import/docker export;将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像,但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。docker import 可以为镜像指定新名称。
docker export 容器ID > test.tar
docker import - new_test < test.tar
若要将修改保存为镜像, 则
docker commit d81abcfd2e3b demo:v1.3 提交你刚才修改的镜像,新的镜像名称为demo,版本为v1.3,期间容器不能停止。docker commit会保存镜像的历史提交记录,体积比docker export大。
sudo docker stop 容器ID
sudo docker rm 容器ID
sudo docker rmi 镜像ID(镜像名)
1 停止Exited容器
2 删除Exited容器
3 删除none镜像
sudo docker stop $(sudo docker ps -a | grep "Exited" | awk '{print $1 }')
sudo docker rm $(sudo docker ps -a | grep "Exited" | awk '{print $1 }')
sudo docker rmi $(sudo docker images | grep "none" | awk '{print $3}')
# 添加docker用户组,一般已存在,不需要执行
sudo groupadd docker
# 将登陆用户加入到docker用户组中
sudo gpasswd -a $USER docker
# 更新用户组
newgrp docker
sudo service docker restart
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。