1. 安装软件
装在C盘会容易满,可以装在D盘,
"path\to\Docker Desktop Installer.exe" install -accept-license --installation-dir=D:\Docker\Docker --wsl-default-data-root=D:\Docker\data
并且在软件的设置的Docker Engine里添加阿里镜像源,
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
"registry-mirrors": [
"https://***.mirror.aliyuncs.com"
]
2. 查看docker 版本号信息
docker version
docker info
3. docker 镜像命令
查看自己服务器中docker 镜像列表
docker images
拉取镜像 不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名
docker pull 镜像名:tag
删除镜像 ------当前镜像没有被任何容器使用才可以删除
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
# 强制删除镜像
docker image rm 镜像名称/镜像ID
# 删除所有缓存
docker builder prune -f
docker修改内容的保存:docker commit
docker容器相当于是docker镜像(类)的一个实例,对容器的修改,实际上是对实例的修改,而实例存在与内存中,重启后全部消失,因此,如需保存容器文件系统的修改,需要把实例的内容保存为新的docker镜像。
docker commit -m="提交描述信息" -a="作者" 容器id 自己起镜像名:tag
保存镜像到.tar
docker save 镜像名/镜像ID > 镜像保存在哪个位置与名字
加载<镜像.tar>
docker load < 镜像保存文件位置
添加一个新镜像来改tag
docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG
4. docker 容器命令
查看正在运行容器列表
docker ps
docker ps -a
新建一个容器(镜像的实例)
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d -p 宿主机端口:容器端口 --name 容器名 --gpus all 镜像名:Tag /bin/bash
\ -v 宿主机文件存储位置:容器内文件位置
\ --restart=always # 设置开机自启动
进入容器
# 启动容器
docker start 容器ID/容器名
# 重启容器
docker restart 容器ID/容器名
# 更换容器名
docker rename 容器ID/容器名 新容器名
# 进入容器的两种方式
docker exec -it 容器名/容器ID /bin/bash
docker attach 容器名/容器ID
容器导出和导入
通过export 和 import 导出的容器形成镜像时, 该镜像只有一层。通过save 和 load 导出的镜像保留了原镜像所有的层次结构, 导出时原镜像有几层, 导入的时候就还是有几层。
docker export container > container.tar.gz
docker import container.tar.gz container:v1
退出容器
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
停止容器
docker stop 容器名/容器ID
# kill容器
docker kill 容器ID/容器名
删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
5. dockerfile编写
把项目的代码比如./facechain文件夹放到和dockerfile同一级目录,
FROM nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04
ADD ./facechain /code
RUN gpg --keyserver keyserver.ubuntu.com --recv A4B469963BF863CC && \
gpg --export --armor A4B469963BF863CC | apt-key add -
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
RUN apt update && \
apt-get update
RUN apt install -y \
wget build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev \
libreadline-dev libffi-dev libsqlite3-dev libbz2-dev liblzma-dev vim libsm6 libxext6 libgl1 libglib2.0-dev && \
apt clean && \
rm -rf /var/lib/apt/lists/*
RUN wget https://www.python.org/ftp/python/3.8.18/Python-3.8.18.tgz && \
tar -xzvf Python-3.8.18.tgz && \
RUN cd Python-3.8.18 && \
./configure --enable-optimizations && \
make && \
make install
RUN ln -s /usr/local/bin/python3 /usr/local/bin/python && \
ln -s /usr/local/bin/pip3 /usr/local/bin/pip
WORKDIR /code
RUN pip3 install -r requirements.txt && \
pip3 install -U openmim && \
mim install mmcv-full==1.7.0 && \
rm -r /root/.cache/pip
镜像构建
docker build -t ImageName:TagName dir