Linux上Docker镜像及容器安装与使用


前言

在现代软件开发和运维中,Docker 已成为一个关键的工具,它通过容器化技术提供了高效、可移植和一致的环境,使得应用程序能够在不同的环境中以相同的方式运行。容器化不仅提高了应用程序的可移植性,还简化了开发和部署流程。Docker 的核心概念包括镜像和容器,它们各自承担着不同的功能和角色。


一、Docker镜像是什么?

Docker 镜像 是一个轻量级的、可执行的独立软件包,它包含运行某个应用程序所需的所有代码、运行时、库、环境变量和配置文件。镜像是容器的构建蓝图,可以从 Docker Hub 或其他镜像仓库中获取,或者根据需要从 Dockerfile 构建。

二、Docker容器是什么?

Docker 容器 是镜像的运行实例。它是一个运行中的、可执行的单元,通过镜像构建而来。容器与虚拟机不同,它们更为轻量且启动速度更快。容器在运行时与宿主操作系统共享内核,但相互之间和宿主操作系统是隔离的。

三、前步骤

1.查看是否安装的cuda驱动

代码如下(示例):

# 检查 CUDA 版本:这将显示 CUDA 编译器驱动的版本信息。
nvcc --version

#检查 NVIDIA 驱动版本:这个命令会显示当前安装的 NVIDIA 驱动版本以及 CUDA 版本等信息。
nvidia-smi

在这里插入图片描述

2.查看是否已经安装好docker

代码如下(示例):

docker --version

在这里插入图片描述

在这里插入图片描述

3.预安装镜像地址:

代码如下(示例):

#padde 提供的镜像包地址:
https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/docker/linux-docker.html
#jupyter提供的镜像包地址:
https://quay.io/repository/jupyter/pytorch-notebook?tab=tags

四、指令步骤

1.拉去镜像

代码如下(示例):

nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.6.1-gpu-cuda11.2-cudnn8.2-trt8.0

在这里插入图片描述

2.建立容器

代码如下(示例):

nvidia-docker run -it --name paddle_2.6.1 --gpus all --shm-size 32g -v /home/sss:/home/sss registry.baidubce.com/paddlepaddle/paddle:2.6.1-gpu-cuda11.2-cudnn8.2-trt8.0 /bin/bash

在这里插入图片描述

3.查看镜像容器

代码如下(示例):

#查看镜像
docker image ls

#查看容器
docker ps
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器
-q :静默模式,只显示容器编号。

#查看镜像依赖的容器
docker ps -a --filter ancestor=<container_id_or_name>

4.进入容器

代码如下(示例):

重启容器并进入交互模式
docker start <container_id_or_name>
docker start 命令用于启动一个已停止的容器。它不会自动附加到容器的控制台,只是将容器从停止状态切换到运行状态。
docker attach <container_id_or_name>
docker attach 命令用于附加到一个已经运行的容器的控制台。通过这个命令,您可以与容器的进程进行交互,查看输出,输入命令等。

docker exec -it <container_id_or_name> /bin/bash
由于容器已停止运行,因此您不能通过 docker exec 命令进入它。

以 root 用户身份进入到容器:
docker exec -u root -it 31e33aafc95b /bin/bash

5.退出容器

代码如下(示例):

方式一:exit(run进容器,exit退出,容器停止)
方式二:ctrl+p+q(run进去,ctrl+p+q退出,容器不停止)

6.查看容器日志

代码如下(示例):

docker stop paddle_2.6.1

7.删除镜像/容器

代码如下(示例):

#在删除镜像时,需要提前删除该镜像依赖的容器
docker rmi <container_id_or_name> 
#删除容器时,需要停止该容器
dockers rm <container_id_or_name> 

#强制删除容器
#可以使用 -f 选项强制删除正在运行的容器:
docker rm -f paddle_bing

8.在已创建的容器中安装torch

代码如下(示例):

#在线安装,可能受网速限制
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
#若网速问题导致安装不了,可以离线安装
torch官网的安装连接:
https://pytorch.org/get-started/previous-versions/
torch等本地下载路径
https://download.pytorch.org/whl/torch_stable.html

使用代码检测torch是否安装成功
python
>>>
>>>import torch
>>>print(torch.__version__)

五、打包步骤

1.停止正在运行的容器: 首先,使用以下命令停止正在运行的 Docker 容器:

代码如下(示例):

docker stop 5a1ad363ae1f

2.保存容器状态为镜像: 一旦容器停止,使用以下命令将其状态保存为一个新的镜像:

代码如下(示例):

docker commit 5a1ad363ae1f tonistiigi:latest

这将创建一个名为 jupyterlab_yolov10_dockerfile,标签为 v1 的新镜像。

3.导出镜像为 tar 文件: 保存好新的镜像后,使用以下命令将其导出为一个 tar 文件:

代码如下(示例):

#未使用sudo
docker save -o /home/sss/jupyterlab_yolov10_file_v1.tar jupyterlab_yolov10_file:v1

#若无权限,使用sudo
sudo docker save -o /home/sss/tonistiigi_latest.tar tonistiigi:latest

这将在 /home/sss/ 目录下创建一个名为 jupyterlab_yolov10_file_v1.tar 的 tar 文件,其中包含了你刚刚保存的镜像。
4、修改文件权限
sudo:以超级用户(root)权限执行命令。
chmod:改变文件权限。
777:设置文件权限为可读、可写和可执行(rwxrwxrwx)。

sudo chmod 777 jupyterlab_yolov10_file_v2.tar

4.从 tar 文件中加载 Docker 镜像:

准备 tar 文件: 确保你有一个包含 Docker 镜像的 tar 文件,例如 image.tar。
加载 Docker 镜像: 使用 docker load -i 命令加载镜像。以下是命令示例:

docker load -i /path/to/image.tar

总结

Docker 是一种广泛使用的容器化平台,它允许开发人员打包应用程序及其依赖项到一个标准化的单元中,这些单元可以在任何系统上运行。通过 Docker,开发和运维团队可以在开发、测试和生产环境中使用相同的环境,从而减少了因环境不一致导致的问题。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值