Docker容器使用手册

news2025/6/5 17:26:33

Docker是一种轻量级、可移植、自给自足的软件运行环境,用于打包和运行应用程序。它允许开发者将应用及其所有依赖打包成一个镜像(Image),然后基于这个镜像创建出容器(Container)来运行。与虚拟机相比不需要完整操作系统,启动快,占用资源小,同时可以跨平台部署,容器内运行环境固定,容器之间相关隔离。

1. Docker安装

在ubuntu下安装docker的流程如下:

sudo apt update
sudo apt upgrade -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common #安装依赖项
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  #添加 Docker 的官方 GPG 密钥
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  #添加 Docker 的官方 APT 仓库
sudo apt update
sudo apt install docker-ce  #安装 Docker
sudo apt install -y nvidia-docker2   #支持GPU

sudo systemctl start docker  #  启动 Docker 服务
sudo systemctl enable docker  # 开机启动 Docker 服务


sudo systemctl status docker #检查 Docker 是否正常运行
sudo docker --version
sudo docker run hello-world

sudo usermod -aG docker $USER  #将当前用户添加到 Docker 组
newgrp docker  #当前会话立即生效

2. Docker的操作命令

2.1 镜像image操作

docker images:查看所有镜像

docker rmi ubuntu:20.04:删除镜像

docker tag <原镜像>:<原标签> <新镜像>:<新标签>:docker tag ubuntu:20.04 myubuntu:v1,根据已有镜像生成新镜像

docker commit <容器ID或名称> <新镜像>:<标签>:根据正在运行的容器保存为新镜像

docker build -t ubuntu2004-gpu:1.0 . :根据 Dockerfile 构建新的镜像,.表示当前目录,Dockerfile应该放在当前目标,构建时会把当前目录作为“构建上下文”传给 Docker 引擎。

docker save -o my_image.tar my_image:tag         //打包镜像到文件

docker load -i my_image.tar    //load打包好的镜像

# 基础镜像:Ubuntu 20.04 + CUDA 11.8 + cuDNN(NVIDIA 官方)
FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu20.04

# 防止 tzdata 卡住
ENV DEBIAN_FRONTEND=noninteractive

# 安装系统依赖和 Python
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        python3 python3-pip python3-dev python3-setuptools \
        build-essential curl git vim wget ca-certificates && \
    rm -rf /var/lib/apt/lists/*

# 创建工作目录
WORKDIR /workspace

# 可选:复制项目代码(你可以根据需要调整)
# COPY . .

# 安装 Python 包(如果有 requirements.txt)
# COPY requirements.txt .
# RUN pip3 install --no-cache-dir -r requirements.txt

# 设置默认命令
CMD [ "bash" ]

2.2. 容器

docker create --name my_container ubuntu bash        //只创建容器不启动

docker run --gpus all -it --name my_container my_image bash     //创建容器并启动

docker start -ai my_container       //启动已停止的容器

docker exec -it my_container bash   //在启动的容器内执行任务

docker rm my_container    //删除容器

docker restart my_container    //重启容器

docker stop my_container    //停止容器

docker ps    //查看所有激活的容器

docker ps -a    //查看所有的容器

docker run --gpus all -it \
--name streampetr \ 

--shm-size=16g \
-v ~/docker_program:/home/program \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04 bash                 //创建并启动容器,包括支持GPU,将宿主目录映射到容器内

docker cp /home/wangyl/data my_container:/data        //复制宿主数据到容器内

一旦容器创建就没有办法再重新映射文件夹,如果容器内代码使用宿主内的数据文件夹而且没有映射,可以在数据文件夹挂载到已经映射的文件夹下,软链接的方式无法找到文件,挂在后需要重启容器,否则也无法找到文件。

sudo mount --bind /home/wyl/datasets/nuscense_simple /home/wyl/program/StreamPETR/data/nuscene

如果翻墙和宿主共享DNS,docker内执行:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

3. VNC操作指令

vncserver -list    //展示所有的vnc会话

ssh -i aigc_key.pem -L 5901:localhost:5901 azureuser@xx.xx.xx.xx  如果vnc使用端口被阻止,通过ssh建立隧道将远端5901端口映射到本地端口,然后通过本地端口使用

vncserver :1: 打开一个VNC会话

vncserver -kill :2 :关闭一个VNC会话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2398450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入解析C++引用:从别名机制到函数特性实践

1.C引用 1.1引用的概念和定义 引用不是新定义⼀个变量&#xff0c;而是给已存在变量取了⼀个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同⼀块内存空间。比如四大名著中林冲&#xff0c;他有一个外号叫豹子头&#xff0c;类比到C里就…

项目交付后缺乏回顾和改进,如何持续优化

项目交付后缺乏回顾和改进可通过建立定期回顾机制、实施反馈闭环流程、开展持续学习和培训、运用数据驱动分析、培养持续改进文化来持续优化。 其中&#xff0c;实施反馈闭环流程尤其重要&#xff0c;它能够确保反馈信息得到有效传递、处理与追踪&#xff0c;形成良好的改进生态…

从0开始学习R语言--Day15--非参数检验

非参数检验 如果在进行T检验去比较两组数据差异时&#xff0c;假如数据里存在异常值&#xff0c;会把数据之间的差异拉的很大&#xff0c;影响正常的判断。那么这个时候&#xff0c;我们可以尝试用非参数检验的方式来比较数据。 假设我们有A&#xff0c;B两筐苹果&#xff0c…

EC2 实例详解:AWS 的云服务器怎么玩?☁️

弹性计算、灵活计费、全球可用&#xff0c;AWS EC2 全攻略 在 AWS 生态中&#xff0c;有两个核心服务是非常关键的&#xff0c;一个是 S3&#xff08;对象存储&#xff09;&#xff0c;另一个就是我们今天的主角 —— Amazon EC2&#xff08;Elastic Compute Cloud&#xff09…

第三发 DSP 点击控制系统

背景 ​ 在第三方 DSP 上投放广告&#xff0c;需要根据 DP Link 的点击次数进行控制。比如当 DP Link 达到 5000 后&#xff0c;后续的点击将不能带来收益&#xff0c;但是后续的广告却要付出成本。因此需要建立一个 DP Link 池&#xff0c;当 DP Link 到达限制后&#xff0c;…

【笔记】在 MSYS2 MINGW64 环境中降级 NumPy 2.2.6 到 2.2.4

&#x1f4dd; 在 MSYS2 MINGW64 环境中降级 NumPy 到 2.2.4 ✅ 目标说明 在 MSYS2 的 MINGW64 工具链环境中&#xff0c;将 NumPy 从 2.2.6 成功降级到 2.2.4。 &#x1f9f0; 环境信息 项目内容操作系统Windows 11MSYS2 终端类型MINGW64&#xff08;默认终端&#xff09;Py…

vue入门环境搭建及demo运行

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 vue简介&#xff1a;第一步&#xff1a;安装node.jsnode简介第二步&#xff1a;安装vue.js第三步&#xff1a;安装vue-cli工具第四步 &#xff1a;安装webpack第五步…

原始数据去哪找?分享15个免费官方网站

目录 一、找数据的免费官方网站 &#xff08;一&#xff09;国家级数据宝库&#xff1a;权威且全面 1.中国国家统计局 2.香港政府数据中心 3.OECD数据库 &#xff08;二&#xff09;企业情报中心&#xff1a;洞察商业本质 4.巨潮资讯 5.EDGAR数据库 6.天眼查/企查查&a…

宝塔部署 Vue + NestJS 全栈项目

宝塔部署 Vue NestJS 全栈项目 前言一、Node.js版本管理器1、安装2、配置 二、NestJS项目管理&#xff08;等同Node项目&#xff09;1、Git安装2、拉取项目代码3、无法自动认证4、添加Node项目5、配置防火墙&#xff08;两道&#xff09; 三、Vue项目管理1、项目上传2、Nginx安…

# [特殊字符] Unity UI 性能优化终极指南 — LayoutGroup篇

&#x1f3af; Unity UI 性能优化终极指南 — LayoutGroup篇 &#x1f9e9; 什么是 LayoutGroup&#xff1f; LayoutGroup 是一类用于 自动排列子节点 的UI组件。 代表组件&#xff1a; HorizontalLayoutGroupVerticalLayoutGroupGridLayoutGroup 可以搭配&#xff1a; Conte…

2024-2025-2-《移动机器人设计与实践》-复习资料-8……

2024-2025-2-《移动机器人设计与实践》-复习资料-1-7-CSDN博客 08 移动机器人基础编程 单选题&#xff08;6题&#xff09; 在ROS中&#xff0c;用于移动机器人速度控制的消息类型通常是&#xff1f; A. std_msgs/StringB. geometry_msgs/TwistC. sensor_msgs/ImageD. nav_ms…

如何监测光伏系统中的电能质量问题?分布式光伏电能质量解决方案

根据光伏相关技术规范要求&#xff0c;通过10(6)kV~35kV电压等级并网的变流器类型分布式电源应在公共连接点装设满足GB/T 19862要求的A级电能质量监测装置。用于监测分布式光伏发出的电能的质量&#xff0c;指标包括谐波、电压偏差、电压不平衡度、电压波动和闪变等。 CET中电…

SPL 轻量级多源混算实践 4 - 查询 MongoDB

除了以上常见数据源&#xff0c;还有 NoSQL、MQ 等数据源&#xff0c;其中以 MongoDB 最为常用。我们用 SPL 连接 MongoDB 做计算。 导入 MongoDB 数据。 外部库 SPL 支持的多种数据源大概分两类&#xff0c;一类是像 RDB 有 JDBC 直接使用&#xff0c;或者文件等直接读取&a…

Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程

昨天我们了解了maestro测试框架以及maestro studio工具以及创建我们的第一个flow&#xff0c;然后通过例子在maestro cli云端进行测试请求并且成功&#xff0c;今天我们就在我们自己的app上简单的进行三种测试流程&#xff0c;maestro cli云端测试&#xff0c;github cl集成测试…

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库

宁德时代新能源科技的SHL测评中&#xff0c;语言理解部分主要考察阅读理解、逻辑填空和语句排序等题型&#xff0c;要求应聘者在17分钟内完成30题。阅读理解需要快速捕捉文章主旨和理解细节信息&#xff1b;逻辑填空则要根据语句逻辑填入最合适的词汇&#xff1b;语句排序是将打…

AutoGenTestCase - 借助AI大模型生成测试用例

想象一下&#xff0c;你正在为一个复杂的支付系统编写测试用例&#xff0c;需求文档堆积如山&#xff0c;边缘场景层出不穷&#xff0c;手动编写让你焦头烂额。现在&#xff0c;有了AutoGenTestCase&#xff0c;这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

接到一位知识星友的邀请&#xff0c;实现他需要3Dtiles三维模型的简单高度调整需求&#xff0c;适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境&#xff1a;依赖Node安装环境&#xff0c;demo本地Node版本:推荐v18。 运行工具&#xff1a;…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时&#xff0c;发现一个异常堆栈信息&#xff0c;核心报错&#xff1a; java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

当 “欧洲版 Cursor” 遇上安全危机

在 AI 编程助手蓬勃发展的当下&#xff0c;安全问题正成为行业不容忽视的隐忧。近期&#xff0c;AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间&#xff0c;因安全漏洞问题掀起了一场风波&#xff0c;引发了业界的广泛关注。​ Replit 的员工 Matt Palmer…

【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】

AA. 我的开发环境配置与核心工具链解析 一、开发环境全览 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…