当前位置: 首页 > article >正文

Docker容器使用手册

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   #支持GPUsudo systemctl start docker  #  启动 Docker 服务
sudo systemctl enable docker  # 开机启动 Docker 服务sudo systemctl status docker #检查 Docker 是否正常运行
sudo docker --version
sudo docker run hello-worldsudo 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.lryc.cn/news/2398450.html

相关文章:

  • 深入解析C++引用:从别名机制到函数特性实践
  • Fuse.js:打造极致模糊搜索体验
  • MyBatis分页插件(以PageHelper为例)与MySQL分页语法的关系
  • CentOS 7.9 安装 宝塔面板
  • 使用Redis作为缓存优化ElasticSearch读写性能
  • 项目交付后缺乏回顾和改进,如何持续优化
  • 从0开始学习R语言--Day15--非参数检验
  • Linux或者Windows下PHP版本查看方法总结
  • EC2 实例详解:AWS 的云服务器怎么玩?☁️
  • 第三发 DSP 点击控制系统
  • saveOrUpdate 有个缺点,不会把值赋值为null,解决办法
  • Java面试:企业协同SaaS中的技术挑战与解决方案
  • 【笔记】在 MSYS2 MINGW64 环境中降级 NumPy 2.2.6 到 2.2.4
  • 前端限流如何实现,如何防止服务器过载
  • 基于大模型的慢性硬脑膜下血肿预测与诊疗系统技术方案
  • vue入门环境搭建及demo运行
  • git checkout C1解释
  • 原始数据去哪找?分享15个免费官方网站
  • 宝塔部署 Vue + NestJS 全栈项目
  • # [特殊字符] Unity UI 性能优化终极指南 — LayoutGroup篇
  • Apache Iceberg 如何实现分布式 ACID 事务:深度解析大数据时代的可靠数据管理
  • 计算A图片所有颜色占B图片红色区域的百分比
  • 2024-2025-2-《移动机器人设计与实践》-复习资料-8……
  • 如何监测光伏系统中的电能质量问题?分布式光伏电能质量解决方案
  • 电子电路:全面深入了解晶振的定义、作用及应用
  • Day-15【选择与循环】选择结构-if语句
  • 定时器时钟来源可以从输入捕获引脚输入
  • SPL 轻量级多源混算实践 4 - 查询 MongoDB
  • 星敏感器:卫星姿态测量的“星空导航仪”
  • Cat.1与Cat.4区别及应用场景