【Docker】知识点整理复习+以往接触整理

写在前面

  • 用于调教ChatGPT吐出知识点的Prompt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 角色:你是一个高级软件开发工程师

# 技能:您能够根据我提出的名词,自动关联其相关的知识点,提供详尽的知识解答,按照以下格式
- 这个东西的定义、概念和用途
- 这个东西的常见用法
- 这个东西在生产实践中的用途
- 这个东西的扩展知识点

# 要求:
- 输出尽可能精确和简洁,只包括最关键的内容
- 减少废话

# 输出:
将知识点按照分点的形式输出,命令行用专门的格式显示

问题:我是一个Linux初学者,现在我需要学习和掌握Docker的相关知识点,用于ollama本地部署,包括常用的命令行及其作用,请你帮助我

定义、概念和用途

  • Docker是一种容器化平台,允许开发人员将应用程序及其依赖环境打包到一个轻量级的、可移植的容器中,从而在不同的环境中保持一致的运行
  • 用途:简化应用部署、测试和运维工作,确保环境一致性

常见用法

安装Docker

  • 通过包管理器(如aptyum)安装
1
sudo apt-get install docker-ce

启动Docker服务

  • 启动Docker服务,确保Docker守护进程运行
1
sudo systemctl start docker

停止Docker服务

  • 停止Docker服务,停止所有运行的容器
1
sudo systemctl stop docker

查看Docker服务运行状态

  • 查看Docker服务的运行状态,了解其是否正常运行或是否有问题
1
sudo systemctl status docker

重启Docker服务

  • 如果Docker服务已启动但遇到问题,可以通过重启来刷新配置或解决问题
1
sudo systemctl restart docker

拉取镜像

  • 从Docker Hub获取镜像
1
docker pull <image-name>

运行容器

  • 启动镜像,创建容器
1
docker run <image-name>

列出容器

  • 显示正在运行的容器
1
docker ps

停止容器

  • 停止正在运行的容器
1
docker stop <container-id>

删除容器和镜像

1
2
docker rm <container-id>
docker rmi <image-name>

Docker在生产实践中的用途

  • 用于本地开发、测试和部署应用,使环境一致性保持在不同开发和生产阶段中。可支持微服务架构和CI/CD管道

Docker的扩展知识点

Docker Compose

  • 多容器应用编排工具
1
2
3
4
5
6
version: '3'
services:
web:
image: nginx
ports:
- "80:80"

Dockerfile

  • 构建自定义镜像的脚本
1
2
3
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3
CMD ["python3"]

卷(Volumes)

  • 持久化数据存储,用于保存容器内的数据
1
docker volume create my-volume

网络(Networks)

  • 用于连接不同容器,支持容器间的通信

实际项目搭建过程中遇到的

ollama部署到云服务器

虽然这个是搞在本地主机导致电脑差点瘫痪

Langchain部署到云服务器

Apollo部署(记录一下全过程qwq)

第一步:安装Docker Engine

  • Apollo 依赖于 Docker 19.03+。安装 Docker 引擎,您可以根据官方文档进行安装:

  • 参见 Install Docker Engine on Ubuntu

  • 您还可以者通过 Apollo 提供的安装脚本直接安装:

1
2
3
wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh

bash docker_install.sh
  • 这个过程可能会运行多次脚本,根据脚本提示执行即可

第二步:获取GPU支持(可选)

唉当时不知道可以租云服务器,都用的CPU硬刚……

  1. 安装驱动

显卡驱动和CUDA版本兼容性

  • 下载之后,找到相应的文件夹打开终端输入安装指令:
1
2
3
sudo chmod 777 NVIDIA-Linux-x86_64-470.63.01.run

sudo ./NVIDIA-Linux-x86_64-470.63.01.run
  • 安装完毕后,通过nvidia-smi指令来检查驱动是否安装成功

安装成功之后的提示如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Tue Jan  3 12:04:21 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.91.03 Driver Version: 470.63.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce GTX 1080 Off | 00000000:01:00.0 Off | N/A |
| 0% 38C P8 7W / 198W | 239MiB / 8118MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 2566 G /usr/lib/xorg/Xorg 18MiB |
| 0 N/A N/A 2657 G /usr/bin/gnome-shell 67MiB |
| 0 N/A N/A 6104 G /usr/lib/xorg/Xorg 132MiB |
| 0 N/A N/A 6234 G /usr/bin/gnome-shell 13MiB |
| 0 N/A N/A 7440 G gnome-control-center 1MiB |
+-----------------------------------------------------------------------------+
  1. 安装 Nvidia container toolkit
  • 为了在容器内获得 GPU支持,在安装完 docker后需要安装 NVIDIA Container Toolkit
  • 运行以下指令安装 NVIDIA Container Toolkit
1
2
3
4
5
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 -y update
sudo apt-get install -y nvidia-docker2
  • 安装完毕之后,手动重启Docker
1
sudo systemctl restart docker

第三步:安装Apollo环境管理工具

  • 安装依赖软件
1
2
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
  • 在宿主机添加Apollo软件源的 gpg key,并设置好源和更新
1
2
3
4
5
6
7
8
9
10
11
# 添加 gpg key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://apollo-pkg-beta.cdn.bcebos.com/neo/beta/key/deb.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/apolloauto.gpg
sudo chmod a+r /etc/apt/keyrings/apolloauto.gpg

# 设置源并更新
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/apolloauto.gpg] https://apollo-pkg-beta.cdn.bcebos.com/apollo/core"\
$(. /etc/os-release && echo "$VERSION_CODENAME") "main" | \
sudo tee /etc/apt/sources.list.d/apolloauto.list
sudo apt-get update
  • 安装aem
1
sudo apt install apollo-neo-env-manager-dev --reinstall
  • 安装成功后启用aem
1
aem -h

步骤四:安装示例工程

  • 选择示例工程

    • application-core , 包含 Apollo 所有开源软件包,可以基于此工程搭建自己的应用

      这个最全

    • application-pnc , 仅包含规划控制相关的软件包,适合仅关注规划控制方向的用户

      比赛时候要求的是这个,只需要做规划控制部分

    • application-perception , 仅包含感知相关的软件包,适合仅关注感知方向的用户

  • 克隆工程

    以 x86 架构的 application-core 为例

1
git clone https://github.com/ApolloAuto/application-core.git application-core

要安装application-pnc就换成对应路径

  • 启动Apollo环境容器
1
2
3
4
5
6
7
8
# 先进入工程目录
cd application-core

# 环境设置:识别主机系统是x86_64还是aarch64, 并修改对应的.env和.workspace.json配置
bash setup.sh

# 启动容器
aem start
  • 进入Apollo环境容器
1
2
3
4
5
# 先进入工程目录
cd application-core

# 进入容器
aem enter
  • 安装软件包
    • 示例工程中包含一个名为 core 目录,其中 core/cyberfile.xml 文件中描述了工程所依赖软件包,可以通过 buildtool 工具进行依赖包的安装
1
buildtool build -p core

‍此操作真正含义是编译工程中 core 这个包,但 core 本身并没有需要编译的代码,所以此操作仅会安装 core/cyberfile.xml 中声明的依赖包

  • 选择车型配置
    • 示例工程中profiles/sample目录是官方提供的基于一个雷达两个摄像头的车型配置,您可以参考profiles目录下的sample编写自己的车型配置,生效车型配置的方法如下
1
2
# 以sample为例
aem profile use sample
  • 播放数据包
    • 获取数据包
1
wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_3.5.record -P $HOME/.apollo/resources/records/
  • 获取数据包对应的地图
1
buildtool map get sunnyvale

每年赛事有专门的地图集好像?

‍从 9.0.0-rc-r10 版本开始,地图数据已经被分离出来,需要单独下载,不再随地图包发布;通过 buildtool map list 可以查看所有可用的地图

步骤五:启动预览Apollo

  • 启动DreamView+
1
aem bootstrap start --plus

启动 Dreamview+之后,在浏览器输入 localhost:8888 进入 Dreamview+ 界面

DreamView+登陆界面

  1. 选择 Default Mode

  2. 勾选 Accept the User Agreement and Privacy Policy/接受用户协议和隐私政策 ,并单击 Enter this Mode 进入 Mode Settings/模式设置 页面。

  3. Mode Settings/模式设置

    页面,设置播包参数。

    • Operations/操作 中选择 Record
    • Environment Resources/环境资源 中,单击 Records/数据包 ,并选择具体想要播放的数据包。
    • Environment Resources/环境资源 中,单击 HDMap/高精地图 ,并选择 Sunnyvale Big Loop
  4. 单击底部区域播放按钮。

启动并播放数据包

  • 通过命令行播放数据包
  1. 进入 docker环境,
  2. Dreamview+Resource Manager/资源管理 > Records/数据包 中先下载需要的数据包。输入以下命令播放数据包
1
cyber_recorder play -f ~/.apollo/resources/records/数据包名称 -l

循环播放数据包,添加 -l

不循环播放数据包,不添加 -l

步骤六:删除工程(可选)

  1. 删除容器

application-core 工程为例

1
2
3
4
5
# 先进入工程目录
cd application-core

# 删除容器
aem remove
  1. 删除工程
1
2
3
4
5
# 回到上一级目录
cd ..

# 删除工程目录
rm -r application-core
  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信