Docker 使用
·
Docker
镜像 image
- 构建
# Dockerfile同级目录下
docker build -t Name:1.0 .
- 删除
# 列出本地所有镜像
docker images -a
# 或只显示短 ID
docker images -q
# ① 停并删光用该镜像的容器(<IMAGE> 可以是 ID 或 仓库:标签)
docker ps -a --filter ancestor=<IMAGE> -q | xargs docker rm -f
# ② 再删镜像
docker rmi <IMAGE>
# 强制删除(已没容器在用)
docker rmi -f <IMAGE>
# 支持一次删多个
docker rmi -f id1 id2 repo:tag
容器 container
-
容器启动
docker run --gpus all -d -it --name isaaclab_v210 --network host --hostname isaaclab_v210 --volume /home/noah/zhengli/scripts:/home/zhengli/ isaaclab:v210 /bin/bash这个Docker命令用于启动一个新的Docker容器并运行一个交互式shell。以下是命令的各个部分的解释:
docker run: 这是Docker的运行命令,用于创建并启动一个新的容器。--gpus all: 这个参数允许容器访问所有的GPU设备。-d: 这个参数表示在后台运行容器。-it: 这个参数使得标准输入、输出和错误都被连接到容器的stdin,并且将容器的标准输出发送到终端。--name isaaclab_v210: 这个参数为新的容器指定了一个名字,名字是isaaclab_v210。--network host: 这个参数将容器的网络栈与宿主机的网络栈合并,使得容器使用宿主机的网络。--hostname isaaclab_v210: 这个参数设置容器的主机名为isaaclab_v210。--volume /home/noah/zhengli/scripts:/home/zhengli/: 这个参数创建一个数据卷,将宿主机的目录/home/noah/zhengli/scripts映射到容器的/home/zhengli/目录。isaaclab:v210: 这是容器的镜像名称和标签。/bin/bash: 这是容器启动时要运行的命令,使用bash解释器启动一个shell。
总的来说,这个命令将在宿主机的/home/noah/zhengli/scripts目录下找到所有的脚本,并在一个具有所有GPU的环境中运行一个交互式的bash shell。
-
查看容器
# 列出正在运行的所有容器 docker ps # 列出所有的容器 docker ps -a -
进入容器
docker exec -it <container-id> /bin/bash -
关闭容器
# 先停 → 再删(两条命令) docker stop <容器ID或名字> docker rm <容器ID或名字> # 一条命令强制停+删 docker rm -f <容器ID或名字> -
容器生成镜像
数据卷 volume
网络 network
-
构建docker时指定### **
--network**参数docker build --network=host -t myimage .支持选项:
bridge:默认的桥接网络(Docker 默认行为)。host:使用宿主机的网络栈(无需端口映射,性能更高)。none:无网络(完全隔离)。- 自定义网络名:使用
docker network create创建的网络。
-
通过 BuildKit 高级配置
如果使用 BuildKit(
DOCKER_BUILDKIT=1),可以通过-- network参数或Dockerfile的RUN --network语法控制网络:# Dockerfile FROM alpine RUN --network=host apk add --no-cache curl然后构建:
DOCKER_BUILDKIT=1 docker build --network=host -t myimage .
Dockerfile
使用 Dockerfile 构建镜像
- 示例
# 基础镜像
FROM nvcr.io/nvidia/isaac-lab:2.2.0
# 设置工作目录
WORKDIR /ws
ENV CUDA_HOME=/usr/local/cuda \
TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0 8.6+PTX" \
SETUPTOOLS_USE_DISTUTILS=stdlib
ENV http_proxy http://127.0.0.1:3128
ENV https_proxy http://127.0.0.1:3128
ENV no_proxy "127.0.0.1, localhost, mirrors.tools.huawei.com"
RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.tools.huawei.com@g" /etc/apt/sources.list
RUN sed -i "s@http://.*security.ubuntu.com@http://mirrors.tools.huawei.com@g" /etc/apt/sources.list
COPY apt.conf /etc/apt/apt.conf
COPY .condarc .condarc
# 复制当前目录下的所有文件到工作目录
# COPY . /ws
# 安装必要的依赖
RUN apt-get -y update && apt-get install -y --no-install-recommends \
curl \
zsh \
libxtst6 \
sudo \
wget \
build-essential \
git \
python3-opencv \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
# 设置环境变量
ENV ACCEPT_EULA=Y
ENV PRIVACY_CONSENT=Y
# 启用 GPU 支持
RUN apt-get install -y nvidia-driver nvidia-container-toolkit
# 设置默认命令
CMD ["zsh"]
其他
- 系统信息 docker system df / info
更多推荐
所有评论(0)