安装docker engine,不要安装docker desktop
- Docker Desktop 是针对 Windows 和 Mac 用户设计的应用,它包含了 Docker 引擎(Docker Engine)和 Docker CLI 工具。对于这些操作系统,Docker Desktop 会启用一个虚拟机(通过 Hyper-V 或 WSL 2)来运行容器,而不是像 Linux 系统那样直接在宿主机上运行 Docker 服务。
- 在 Linux 系统 上,你需要使用 Docker Engine,而不是 Docker Desktop。
- 此外网上大多数教程都是针对Docker Engine的。
Ubantu安装教程
直接运行
| |
Docker加速
镜像
2025 Docker/DockerHub 国内镜像源/加速列表 Docker 国内镜像加速地址-长期更新(2025-06) - 讲文张字 - 博客园
这些镜像通常只能pull不能search,要search直接去dockerhub网站,要在终端可以用下面的方法:配置代理
配置代理
方法一
| |
添加以下内容并保存,端口号7890根据电脑实际情况修改
| |
重新加载 systemd 并重启 Docker
| |
方法二
配置全局代理
| |
配置 HTTP 和 HTTPS 代理:
| |
开启容器代理
| |
查看docker网卡地址,运行ifconfig
假设得到docker0地址为:172.18.0.1
http://proxy.example.com 填172.18.0.1
安装 NVIDIA Container Toolkit
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit
安装完成之后配置docker
| |
重启docker服务
| |
下载镜像
去dockerhub搜索 Docker Hub Container Image Library | App Containerization
找到想要的镜像之后进行docker pull,可以直接copy code运行,举个例子
| |
运行镜像
| |
- –gpus all:将所有 GPU 暴露给容器。也可以指定 GPU 数量或 ID,比如 –gpus ‘“device=0,1”’
- -it:交互模式,进入容器
- -d 让容器在后台运行,保持容器常开
- nvidia/cuda:12.4.1-runtime-ubuntu22.04:你的镜像名称,比如 my-gpu-image
- /bin/bash:进入容器 shell(可按需修改为运行的脚本或命令)
- –name: 给容器起的名字
- –env 环境变量
注意,运行容器的终端需要开启http代理
退出 进入 容器
1. 退出容器
如果你在容器内部使用
bash或其他 shell,想要退出容器,可以使用以下命令:1exit这会让你退出当前的容器 shell 会话,容器仍然在后台运行(如果是交互模式且没有显式停止容器)。
或者,如果你只是想暂时返回主机的命令行,也可以按
Ctrl + P,然后Ctrl + Q,这样容器会在后台继续运行,而你会返回到主机的命令行。
2. 查看正在运行的容器
如果你退出了容器,但想再次进入容器,首先需要确认容器是否在运行。可以使用以下命令查看当前正在运行的容器:
| |
这将显示所有正在运行的容器,包括容器 ID 和名称等信息。
| |
这将显示所有的容器,包括没有运行的。
3. 再次进入容器
你可以通过容器 ID 或名称再次进入容器。使用以下命令:
| |
4. 进入已停止的容器
如果容器已经停止,你可以先重新启动容器,然后再进入容器:
| |
然后再次使用 docker exec 进入容器:
| |
缓存清理
docker清除构建缓存
| |
清理未使用的镜像、容器、卷和网络 docker system prune
这条命令会删除:
- 未运行的容器(停止的容器)
- 悬挂镜像(没有标签的镜像)
- 未使用的网络
- 未使用的卷(可以加 –volumes 参数来删除未使用的卷)
docker导致的文件夹权限问题 容器中创建的文件或文件夹的属主是 root 用户,可能导致主机用户(如 fyq)没有权限修改或删除。
假设容器运行后你发现主机文件夹 /home/fyq/nuplan/exp/... 是 root 拥有的。
你可以在主机上运行以下命令将属主改回自己:
| |
拷贝文件进入容器
| |
docker cp 有一个已知限制:它不能递归地覆盖已有的目录结构中的单个文件,尤其是容器内目标路径已经存在且非空的情况下。
只能先删除容器内的目标目录,再copy。
dockerfile常用命令
1. FROM:指定基础镜像(必须的第一行)
| |
2. RUN:在镜像中执行命令(用于安装软件等)
| |
3. COPY:将本地文件/目录复制到镜像中
| |
4. ADD:类似 COPY,但支持自动解压 .tar 文件及远程下载
| |
5. WORKDIR:设置工作目录(后续命令会在此目录下执行)
| |
6. CMD:指定容器启动时默认执行的命令(只生效一次)
| |
7. ENTRYPOINT:指定容器启动命令(常用于将容器当作命令运行)
| |
8. ENV:设置环境变量
| |
9. EXPOSE:声明容器监听的端口(不自动映射)
| |
10. VOLUME:声明挂载点(用于持久化数据)
| |
11. ARG:构建时传参(与 ENV 区别是生命周期)
| |
从dockerfile构建容器
| |