系列文章目录



硬件:联想拯救者y7000

安装Ubuntu18.04

安装Ubuntu首先你要想好是这个Ubuntu你要放在哪里,常见的有3个方法:
1、放在VMware虚拟机里
2、弄成双系统
3、放在大容量硬盘或者U盘上挂载

考虑到自己是用在深度学习上,虚拟机和移动硬盘挂载可能不是特别适合我(原因可以自己去百度)所以我决定使用双系统方案。
那为什么要用18版不用20版的Ubuntu呢,因为18的时间比20长你遇到的坑别人绝大多数都踩过,网上可供参考的资料会更多,懂的都懂
现在安装20和22版本的Ubuntu或许是一个更好的选择,16、18、20、22已经成为Ubuntu经典版本。

安装准备

1、 Ubuntu系统镜像链接
2、 USB刻录软件Rufus
3、4G左右的U盘

烧录镜像与分配空间

其实这个烧录也没什么好说的你可以用Rufus,也可以用软碟通,只要把镜像ISO文件录进去就行了,这里就不过多解释,详细操作自己试一次就知道了。
烧录

首先不要急着去重启安装,要分配好所需要的磁盘空间,在桌面的“计算机”上右键,选择“管理”,进入如下窗口,点击“磁盘管理”(这图不是我的,因为我在Ubuntu里面写,所以没有专门去截图)。
在这里插入图片描述

我建议为Ubuntu分配50G到100G左右的空间(看你有多大的盘),选中一个盘(别选C盘,信我),我的是D盘分配了200G。选中D 盘,按鼠标右键,选择“压缩卷”,在新弹出的窗口上输入200000M就OK了。做完这些准备工作就可以正式安装了。

安装Ubuntu

第一步连接电源,插入U盘,关机重启,在电脑进入logo阶段时,快速长按bios键进入boot界面,注意是boot界面不是BIOS界面(我的电脑是拯救者,进入boot界面的BIOS键是F12)。bios设置u盘启动,这个网上依据不同机型教程各不相同,我就不说了自己查。
第二步在boot界面里有一个UEFI的U盘启动入口(如果你的不是UEFI或者没有的,可以去参考一下这篇博客),键盘控制进去,可以看见一个类似下图的的界面。
在这里插入图片描述
用键盘控制,选择 Install Ubuntu 回车进入安装。(我看见有的人会在回车后卡住,可是我没有遇到这种情况,不过我把别人的方法贴出来,注意不要急着去安装驱动)
第三步这里就要注意了,一些选项不要选错了:

选择 Install Ubuntu
在这里插入图片描述

选择中文汉语(选别的就自己看着办)
在这里插入图片描述

先不要连WiFi,不然在安装时会同时下载别的东西会很慢,跳过
在这里插入图片描述

这个选择第一个,第二个都行,区别是第一个会多配上一些工作软件,安装时间会长一点;第二个就比较空白(第三个就别选了,很多人都不建议所以我没试过,如果你试过可以去评论区告诉我)
在这里插入图片描述

必选其他选项,很重要,你的启动盘、系统盘和用户盘等都是在这里做的,然后继续
在这里插入图片描述
点击其它选项后继续,会弹出这个界面
在这里插入图片描述
选择空闲设备,这个空闲设备容量大约是200000M,它就是我们前面所压缩出来的200G硬盘。把这个硬盘分成4个(分多少个,每个分多少,看个人,别乱分就行),如下表:

名称 分区 格式 大小
/boot 逻辑分区 Ext4 500M
/ 主分区 Ext4 50G
swap 逻辑分区 swap 8G
/home 逻辑分区 Ext4 剩余

我们选择空闲设备,然后点击下面的+号进行分区,在创建分区界面进行配置。
最后分区结束后,不要急着下一步安装,先点击+号下面一行的“安装启动引导器设备”选项,选择你之前分了500M左右的那个/boot设备。

右下角继续安装将改动写入磁盘,继续配置时间地图、账号和密码,然后就开始安装等待了。


安装网卡和NVIDIA驱动

安装准备

1、更换清华源
清华开源镜像站,阿里云开源镜像站
打开终端

将系统自带的该文件做个备份:
 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
 
 备份后输入命令更换文件里面的内容:
 sudo gedit /etc/apt/sources.list
 
 sudo apt-get update 更新源
sudo apt-get upgrade 更新软件

有线网络无法连接,安装gcc和make安装驱动 ,先跳过这一步,离线安装显卡驱动,安装后会有网卡驱动的。

无线网络无法连接,估计是驱动不匹配,比如我的型号是Intel® Wi-Fi 6E AX211 160MHz,参考这篇博客安装新驱动

2、下载驱动
驱动安装有3种方法,大概可以看这个博客介绍,不过我推荐用下载驱动进行安装这个方法,这样你就可以自由安置你的驱动文件
Nvidia中文官网选填对应信息,下载好对应驱动编译,注意自己电脑对应配置,选择对应的驱动(建议不要选择过高版本的驱动)选填对应信息
1)打开终端,先删除旧的驱动:

sudo apt-get purge nvidia*

2)禁用自带的 nouveau nvidia驱动

创建一个文件通过命令 sudo vim /etc/modprobe.d/blacklist-nouveau.conf

并添加如下内容:

blacklist nouveau
options nouveau modeset=0

再更新一下

sudo update-initramfs -u

修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令:

lsmod | grep nouveau

3)重启系统至init 3(文本模式),也可先进入图形桌面再运行init 3进入文本模式,再安装下载的驱动就没问题

首先我们需要结束x-window的服务,否则驱动将无法正常安装

关闭X-Window,很简单:

sudo service lightdm stop

然后切换tty1控制台:Ctrl+Alt+F1即可(切换不出来可以把F1换成F2,F3,tty1,tty2,tty3感觉都一样)

正式安装

接下来就是最关键的一步了:

sudo chmod NVIDIA*.run
sudo ./NVIDIA-Linux-x86_64-***.**.run –no-x-check -no-nouveau-check -no-opengl-files

–no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。
–no-x-check:表示安装驱动时不检查X服务,非必需。
–no-nouveau-check:表示安装驱动时不检查nouveau,非必需。
-Z, --disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
-A:查看更多高级选项。

安装过程中可能会遇到的一些选项

Multiple kernel module types are available for this system. Which would you like to use

选择NVIDIA Proprietary

An alternate method of installing the NVIDIA driver was detected. (xxxxxxxxxxxxx).Please review the message provided by the maintainer of this alternate installation method and decide how to proceed:

选择continue installation

ERROR: Unable to find the development tool cc in your path; please make sure that you have the package ‘gcc’ installed. If gcc is installed on your system, then please check that cc is in your PATH.

意思是缺少gcc库,需要安装gcc库,可以安装以下可能需要的依赖,其中build-essential包含了gcc、g++、make。

 sudo apt-get update 
 sudo apt-get install dkms build-essential linux-headers-generic
 sudo apt-get install gcc-multilib xorg-dev
 sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev  libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

使用命令查看gcc版本。

gcc --version

在这里插入图片描述

The distribution-provided pre-install script failed! Are you sure you want to continue?

选择 yes 继续。

Would you like to register the kernel module souces with DKMS? Thiswill allow DKMS to automatically build a new module, if you install a different kernel later?

选择 No 继续。

问题大概是:

Nvidia's 32-bit compatibility libraries?

选择 No 继续。

Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up.

选择Yes 继续
(这个sudo ./NVIDIA-Linux-x86_64-*****.run –no-x-check -no-nouveau-check -no-opengl-files是对应你的文件路径下的驱动文件)安装过程比较快,要多注意提示,选择和error字眼,如果安装失败了,那么根据它给出的失败提示进行百度查询即可,失败原因可能是环境没配好,类型比较花式,这里就不一一列举。

最后安装完毕后,重新启动X-Window:

sudo service lightdm start

然后Ctrl+Alt+F7进入图形界面;

最后测试一下是否安装成功

nvidia-smi

nvidia-settings

成功图例如下
在这里插入图片描述
如果提示错误nvidia-smi has failed because it couldn‘t communicate with the nvidia driver,可以参考这篇博客解决


安装cuda10.1,cudnn7.6

**首先说明一下以下可以自定义安装位置的尽量自定义,这样可以有效控制管理自己的电脑,不要搞得乱七八糟。 **
2022年9月14日,更新多cuda教程

安装cuda

cuda10.1是cuda目前的主流版本,而cudnn7.6是cuda10.1对应版本。在cuda官网选择系统对应的版本下载CUDA10.1.

  1. 进入终端执行官网提示的命令(run和deb版都行,我用的是run)
    在这里插入图片描述
  2. 进入终端可视化安装界面,要注意的是因为电脑已经搭载好驱动,所以不要勾选Driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.然后在Install安装。

在这里插入图片描述

  1. 出现以下画面表示coda10.1安装成功

在这里插入图片描述

  1. 安装完成后还要对CUDA相关配置进行修改,将CUDA的编译器添加到环境变量中。
    打开终端输入命令:
 sudo gedit  ~/.bashrc

在最下面添加:

export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH

使配置文件生效:

source ~/.bashrc
  1. 测试版本号是否对应 ,判断cuda是否安装成功,执行:
 nvcc --version

可以打印显卡信息查看:

nvidia-smi

安装cudnn

官方下载cudnn,选择匹配CUDA10.1版本的cudnn下载
在这里插入图片描述
直接解压cudnn,进入对应的文件路径,把文件拷贝到cuda相应的文件夹下即可:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/*.* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

查看cudnn版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

安装pycharm

有很多人会吐槽pycharm怎样怎样,推荐用别的文本编辑器比如sublime text3、VS code,Jupyter NoteBook等,甚至会叫你直接用记事本写。但是我推荐用pycharm的原因是集成度高,新手必备工具。

下载安装

官方地址

下载社区版(专业版可以自己找找激活码)平时就够用了
pycharm更新很快,推荐下载前几个月的版本(从其他版本进去)
在这里插入图片描述

下载好软件包并找好地方进行解压,解压后可直接运行,无需安装。
这时会有一个问题
平时启动软件需要在终端输入:

(对应安装路径和安装包名称需改动)
sh pycharm/pycharm-2020.3.3/bin/pycharm.sh

它没有生成快捷方式,想要生成快捷方式需要在/usr/share/applications创建一个文件:pycharm.desktop

cd /usr/share/applications
sudo gedit /usr/share/applications/pycharm.desktop

在这个文件里添加以下内容

[Desktop Entry]
Version=1.0
Type=Application
Name=Pycharm
Icon="/home/python/Program File/pycharm-2020.1.1/bin/pycharm.png"
Exec=sh "/home/python/Program File/pycharm-2020.1.1/bin/pycharm.sh"
MimeType=application/x-py;
Name[en_US]=pycharm
(注意!这里Icon和Exec的你对应路径和文件名,可以从该文件的属性里查看)

最后通过系统应用程序搜索pycharm,找到并打开软件,此时桌面左侧会有快捷方式出现,然后右键锁定到桌面左侧。

pycharm里使用pytorch库报错

在终端使用pytorch库是正常的,而在pycharm里使用pytorch库就提示报错:

OSError: libmkl_intel_lp64.so: cannot open shared object file: No such file or directory

分析1

LD_LIBRARY_PATH未正确传递​​
PyCharm默认不会继承终端的动态库路径(如LD_LIBRARY_PATH),导致运行时找不到MKL库。

方法1

在PyCharm中配置环境变量
菜单 → Run → Edit Configurations → 选择你的Python运行配置。

​​添加环境变量​​
在 Environment variables 字段中添加:

LD_LIBRARY_PATH=/home/user/anaconda3/lib:$LD_LIBRARY_PATH

具体路径查找方式(在终端执行):
查找libmkl_intel_lp64.so的位置

find ~/anaconda3/ -name "libmkl_intel_lp64.so" 2>/dev/null

示例输出(路径可能类似):

/home/user/anaconda3/lib/libmkl_intel_lp64.so

分析2:​​PyCharm使用了不同的Python环境​​

PyCharm可能配置了与终端不同的Python解释器或虚拟环境。

方法2: 确保PyCharm使用正确的Python解释器

​​检查PyCharm的解释器​​

File → Settings → Project: <名称> → Python Interpreter

终端查看路径

which python

确保选择的解释器与终端使用的​​完全一致​​。


安装OpenCV4

OpenCV是什么我就不说了,在安装OpenCV时我是相当痛苦的,因为CV对接的是本机的Python3,可是调用anaconda3建立的Python虚拟环境才是我们的理想配置。那如何让anaconda3也能调用OpenCV呢?经过多次测试最好是一开始就先装opencv,这样系统自动用系统自带python进行编译,等生成了cv2.so再安装anaconda。

安装依赖

搭建OpenCV需要安装依赖,否则容易失败:

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev libgtk2.0-dev pkg-config
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
sudo apt-get install libgtk-3-dev

下载源码

  1. 进入官网,老规矩下载最新版的上一个版本,比如4.4Sources版本
    在这里插入图片描述
  2. 再去GitHub上下载opencv_contrib源码两者的版本要一致
    在这里插入图片描述
  3. 最后将contrib压缩包解压后放进之前解压好的Opencv Sources的文件夹下

在这里提前打个补丁,因为在后面编译OpenCV 以及 openc_contrib 时很容易出现提示:缺少boostdesc_bgm.i文件出错。可能是因为墙的问题,有一些文件下载不全

总共缺了以下几个文件:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

所以需要手动打补丁。

这里感谢这位博主贡献的资源,自行下载:https://blog.csdn.net/AlexWang30/article/details/99612188

下载解压到对应的opencv_contrib/modules/xfeatures2d/src/目录下

下载cmake-gui

官网下载cmake(我用的是3.14,直接终端下载的话版本很低,且听说会有点问题),解压后打开cmake-gui。
在这里插入图片描述
进入cmake-gui后,需要进行参数配置,可以参考这篇博客的

2.cmake 配置
https://blog.csdn.net/qq_36275734/article/details/81158966

一定要注意在配置中下面对应的路径指向

Python 3:
    Interpreter:                 
    Libraries:                   
    numpy:                       
    packages path:  

每次Configure 时都要注意下方区域有没有标红的和error字眼,如果有请自行百度,因为cmake的问题各种各样的,很奇葩。
配置完成后,点击Generate,会在build文件夹中生成一系列文件.

终端编译opencv

重头戏来了

  1. 终端进入到build文件目录下
  2. 编译,可以使用多线程编译来加快编译速度(比如 make -j6之类的)但是这里每个人的配置都不一样,根据cpu性能选择多线程编译数,不要占满自己CPU,用一半就行了(编译需要好一会时间)
sudo make
  1. 经过漫长的等待,终于编译成功了(失败了怎么办?检查编译失败的错误消息,在确保cmake-gui没问题下,可能是有一些依赖没安装好,并且我会在评论区记录一些遇到过的问题以及解决方法),安装:
sudo make install 

4.验证opencv安装:

pkg-config opencv4 --libs                   (查看opencv的lib库)
pkg-config opencv4 --modversion             (查看opencv的安装版本) 

安装anaconda

Anaconda是python开发环境特好用的一个工具,可以让你建立不同的python虚拟环境不受外界干扰,在同一机器上不同python工程提供了方便。也是一个出色的集成开发工具集,包括了Python解释器、conda包管理器、以及众多集成好的数学科学库(numpy/pandas/matplotlib/scipy/sk-learn 等等)因此非常适合于对 python 有数据处理需求的工程师与学生使用,可以减少因包依赖导致的库下载失败而浪费时间。

下载安装

国内用户可以从清华大学开源软件镜像站里面获取 Anaconda 3
根据自己的基础配置选择对应的 Linux 86_64 位版本下载。
在这里插入图片描述

下载好后,终端进入安装包所在的对应目录,执行:

bash Anaconda3-***-Linux-x86_64.sh

然后就开始一直按回车,直到最后许可信息显示完出现下面提示,回复yes
在这里插入图片描述
之后就提示你要将Anaconda安装在目录/home/xxx/anaconda3下面:(建议使用此目录)直接按回车键表示使用默认目录,进行安装过程了。
在这里插入图片描述
在这里插入图片描述

等待安装完之后,会询问是否把anaconda的bin添加到用户的环境变量中
输入yes
在这里插入图片描述
检查是否安装
打开一个新的终端,输入

python
或
conda --version

安装成功后你就可以开始创建管理自己的虚拟环境了。
在这里插入图片描述

OpenCV与anaconda调用问题

接回OpenCV安装前谈到的问题:如何让anaconda3也能调用OpenCV?
其实使用系统自带的python2和python3编译分别会生成对应Python版本的cv2.so和cv2.cpython-35m-x86_64-linux-gnu.so(一般现在都是Python3)这就是我们分别在anaconda2和anaconda3中import的cv2模块。

因为我的是anaconda3,所以首先进入到~/opencv-4.4.0/my_build_dir/lib/python3目录下将其中的cv2.cpython-35m-x86_64-linux-gnu.so复制到anaconda下。(如果是anaconda2就直接将cv2.so复制进去就可以了)

(一定要找对位置)
sudo cp cv2.cpython-35m-x86_64-linux-gnu.so /home/zya/anaconda3/lib/python3.6/site-packages/

然后改名:

sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

当然你不愿意复制也可以使用建立软链接的方式(不太推荐,个人觉得没复制的方便)

ln -s /usr/local/lib/python3.6/site-packages/cv2.cpython-36m-x86_64-linux-gnu.so /anaconda3/lib/python3.6/site-packages/cv2.so

然后问题完美解决了!


安装TensorFlow-GPU

版本对应

Anaconda中安装TensorFlow的时候发现:Anaconda自动安装TensorFlow的时候会配置你安装版本对应的CUDA和cuDNN,而我们的是反过来的,我觉得问题不大。TF与cuda、cudnn的版本对应如下:
在这里插入图片描述

创建与安装

1.创建虚拟环境:
我们在anaconda3中创建虚拟环境来调用TF,这样就不会影响电脑本身的环境。

创建tf虚拟环境
conda create -n tf python=3.6(tf为自定义命名)
激活环境
source activate tf
退出虚拟环境。
conda deactivate
安装TensorFlow-gpu2.1.0,两方法(这个2.1.0可以自己修改为自己想要的)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.1.0
或
conda install tensorflow-gpu=2.1.0

有时只修改镜像源是不够的,依旧会爆出HTTP超时,需要设置超时时间,还有就是pip和conda的都改一下,有时候用conda有时候用pip的。

国内常用镜像源,自由替换:

阿里:https://mirrors.aliyun.com/pypi/simple/
百度:https://mirror.baidu.com/pypi/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/

中科大: https://pypi.mirrors.ustc.edu.cn/simple/
山东理工大学:https://pypi.hustunique.com/

安装好后进行测试
终端进入虚拟环境,然后输入

python

输入

>>> import tensorflow as tf
>>> print(tf.__version__)
2.1.0

这样子就成功了


安装pytorch-GPU

版本对应

pytorch与cuda、cudnn的版本对应如下:
在这里插入图片描述

创建与安装

1.创建虚拟环境:

创建tf虚拟环境
conda create -n torch python=3.6(tf为自定义命名)
激活环境
source activate torch
退出虚拟环境。
conda deactivate

2.安装

pip install torch==1.6.0 torchvision==0.7.0 -f http://download.pytorch.org/whl/torch_stable.html

可能是因为国外的原因,下的比较慢,嫌弃的话可以到国内开源镜像站下载对应版本的清华源pytorch镜像站阿里云pytorch镜像站没试过 ,表示很好用,建议用这个)

到下载好的目录下安装:

cd 压缩包所在文件夹
conda install --offline pytorch-1.6.0-py3.6_cuda10.1.243_cudnn7.6.3_0.tar.bz2
conda install --offline torchvision-0.7.0-py36_cu101.tar.bz2

多CUDA安装

2022年9月14日,更新多cuda教程

公司服务器被多人使用导致需求不同的cuda版本,一直没找到一个完全完整靠谱的教程,这是我参考几个博客完成测试的全过程记录,方便以后操作,无任何商业用途,如有侵权,请联系删除。
CUDA历史下载
CUDNN历史下载

之前已经安装了一个cuda10.1,现在安装cuda10.2及其cudnn8.0.5

根据官网命令执行
在这里插入图片描述

这个选项表达已经有cuda存在于/usr/local/cuda,是否更新此安装?
选yes没问题。
在这里插入图片描述
至此之后安装成功,不专门截图。。。

执行命令,查看是否有新的cuda

ls -l /usr/local | grep cuda

在这里插入图片描述

安装cudnn,选第一个
在这里插入图片描述

下载解压后,进入该文件夹
在这里插入图片描述
执行以下命令,请根据自己下载的cuda版本号以及观察 /usr/local下的文件对命令进行修改

sudo cp cuda/include/cudnn* /usr/local/cuda-10.2/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.2/lib64
sudo chmod a+r /usr/local/cuda-10.2/include/cudnn.h /usr/local/cuda-10.2/lib64/libcudnn*

同时建议把之前的cuda与cudnn文件也整理一下,到时候就可以直接整体进行软链接,命令与上面的一样格式.

终端执行sudo gedit ~/.bashrc,打开环境变量配置文本。将里面所有与cuda有关的带版本号路径都改为无版本号的。比如我之前已经安装好了cuda10.1,然后当时配置环境变量时,有许多/usr/local/cuda-10.1/这样的路径,要做的就是把所有的-10.1都去掉。修改好之后,保存并关闭文件,然后在终端执行命令source ~/.bashrc使环境变量的修改生效。

切换不同的cuda执行以下命令

# 删除目前的软链接
sudo rm -rf /usr/local/cuda  
# 生成新的软链接
sudo ln -s /usr/local/cuda-10.2 /usr/local/cuda 
# 查看当前cuda的版本,或者用nvcc --version
cat /usr/local/cuda/version.txt
#查看cudnn版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

Docker安装

2025年2月9日,更新Docker安装教程

查看是否已安装了docker

通过查看docker版本信息来确认
sudo docker version

如果已安装,运行以下命令卸载docker

sudo apt-get remove docker docker-engine docker.io containerd runc

Step1:更新系统软件包

sudo apt update

Step2:安装依赖包【用于通过HTTPS来获取仓库】

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Step3:添加Docker官方GPG密钥

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Step4:添加Docker阿里稳定版软件源

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Step5:再次更新软件包

sudo apt update

Step6:安装默认最新版

sudo apt install docker-ce docker-ce-cli containerd.io

Step7:测试,安装好后默认启动

sudo docker pull hello-world

sudo docker run hello-world

问题1:拉取镜像时提示超时

Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.

遇到连接超时的问题,这通常是因为使用官方的Docker镜像源访问速度较慢或不稳定所导致的。为了加速 Docker 镜像的下载和提升稳定性,解决这个问题,除了使用以上的阿里云镜像外,还有一种有效方法就是更换镜像源,配置加速地址。

打开

sudo mkdir -p /etc/docker

写入:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        	"https://do.nark.eu.org",
        	"https://dc.j8.work",
       	"https://docker.m.daocloud.io",
        	"https://dockerproxy.com",
        	"https://docker.mirrors.ustc.edu.cn",
        	"https://docker.nju.edu.cn", 
				"https://pee6w651.mirror.aliyuncs.com",
				"https://docker.m.daocloud.io",
				"https://dockerproxy.com",
				"https://registry.docker-cn.com",
				"https://docker.mirrors.ustc.edu.cn",
				"https://hub-mirror.c.163.com",
				"https://hub.uuuadc.top",
				"https://docker.anyhub.us.kg",
				"https://dockerhub.jobcher.com",
				"https://dockerhub.icu",
				"https://docker.ckyl.me",
				"https://docker.awsl9527.cn",
				"https://mirror.baidubce.com"
    ]
}
EOF

重新加载配置,重启Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker
sudo docker info

在这里插入图片描述

这里出现了Registy Mirrors。说明通过上面的命令已经配置成功。

重新测试:

sudo docker pull hello-world

sudo docker run hello-world

在这里插入图片描述

如果输出“Hello from Docker!”则表示Docker已经成功安装。

Step8:查看有哪些镜像

sudo docker images

在这里插入图片描述

Step9:配置用户组

sudo usermod -aG docker 用户名 # 授予用户访问Docker的权限
su - 用户名  # 切换到该用户并加载新组权限
docker images # 验证无需sudo即可使用Docker命令

Step10:其他docker运行命令

#开机自启
sudo systemctl enable docker

# 启动
sudo systemctl enable docker
或者
sudo systemctl start docker
或者
sudo service docker start

#运行状态
sudo systemctl status docker
sudo service docker status

#停止
sudo systemctl  stop docker
sudo service docker stop

#重启
sudo systemctl  restart docker
sudo service docker restart

#查看docker中运行的容器
 sudo docker ps
 
#查看docker中所有的容器
sudo docker ps -a

#启动一个已停止的容器:
docker start <容器ID>

#停止一个已启动的容器
docker stop <容器ID>

#重启一个已启动的容器
docker restart <容器ID>

#查看容器内的标准输出
docker logs <容器ID>

#获取镜像:例如获取ubuntu镜像
sudo docker pull ubuntu

#获取最新镜像
sudo docker pull ubuntu latest

#移除容器
docker rm -f  <容器ID>
#显示镜像的历史记录
docker history

#导出容器
docker export <容器ID> > <文件名>.tar

#导入容器
cat docker/<文件名>.tar | docker 导入 - 测试/<容器名>:v1
例如:cat docker/ubuntu.tar | docker import - test/ubuntu:v1

#查看镜像
sudo docker image lsdocker images

#删除镜像
sudo docker rmi image

#批量删除所有镜像
sudo  docker rmi `docker images -q

#查看Docker网络
sudo docker network ls

#删除指定的Docker网络,例如:test (注意:删除网络后连接到该网络的容器都会断开网络)
docker network rm test

#进入Docker容器
docker exec -it <容器名或id>  /bin/bash

#创建新的镜像
docker commit  < OPTIONS >  container <REPOSITORY[:TAG]>
例如:docker commit test_id_or_name my-test-image:latest  (这将基于test的id或name容器创建一个新镜像my-test-image,标签为latest)

#配置容器随docker一起自动启动
docker run -restart=always

#如果容器已经启动,可以使用一下命令
docker update -restart=always <CONTAINER ID>

#如果已经配置容器随docker一起启动,现在想配置容器不跟随启动
docker update --restart=no <CONTAINER ID>

#批量关闭自启
docker update --restart=no $(docker ps -a -q)

其他:安装特定版docker

sudo apt-cache madison docker-ce  # 显示可用版本
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io # 将需要的版本替换VERSION_STRING进行安装,例如 5:20.10.17~3-0~ubuntu-focal

FFmpeg安装

2025年9月25日,更新FFmpeg安装教程

参考博客

建议使用编译安装的方式安装FFmpeg库,因为直接安装的FFmpeg库可能功能不全或者功能过全
FFmpeg历史版本下载

使用编译安装可以自定义调用具体的第三方库,有效控制FFmpeg库的大小,这里编译安装的是最基本的FFmpeg库,没有使用什么第三方库。

下载指定的FFmpeg库版本,这里使用的是8.0版本。

安装依赖库:

sudo apt-get install -y \
  libass-dev \
  libfreetype6-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  zlib1g-dev \
  openssl libssl-dev \
  nasm

可以添加使用的第三方库:
opensll:提供 HTTPS/SSL/TLS 支持。用于访问需要加密的网络流(如 https://URLs),或者需要加密协议(如 tls://)时。

libopus: 提供 Opus 音频编解码器的编码和解码支持。Opus 是一种高效、低延迟、开源的音频格式,广泛用于网络流媒体、语音通话(如 WebRTC)和高质量音频。

libmp3lame:提供 MP3 音频编码支持(LAME 编码器)。

libfdk-aac:提供高质量的 AAC (Advanced Audio Coding) 音频编码支持(FDK 编码器)。通常被认为是 FFmpeg 中质量最好的 AAC 编码器。

libvpx:提供 VP8 和 VP9 视频编解码器的编码和解码支持。VP9 是 Google 开发的开源、高效的视频格式,常用于 WebM 文件和网络视频(如 YouTube)。

libx265:提供 H.265/HEVC 视频编码支持。HEVC 是一种高效的视频压缩标准,能提供比 H.264 更好的压缩率(节省带宽/存储),但计算更复杂。

libx264:提供 H.264/AVC 视频编码支持。H.264 是目前最广泛使用的视频压缩标准,兼容性极好,用于蓝光、流媒体(如直播、视频网站)、视频会议等。

Yasm:​​一个汇编器。用于编译 FFmpeg 及其部分依赖库(尤其是 libx264, libx265)中高度优化的​​汇编代码​​。在 x86/x86_64 平台上,如果追求性能,几乎是必需的。​

NASM:另一个现代的汇编器,功能与 Yasm 类似且兼容。现在许多项目(包括较新版本的 libx264)更推荐或只支持 NASM。​​ ​​在 x86/x86_64 平台上,如果追求性能,几乎是必需的。

如果需要可以参考博客自行编译安装 ,如果不需要某些功能,则可以无视。

简洁的ffmpeg库:

打开FFmpeg所在文件夹,开始编译安装:

./configure --prefix="/home/xxx/ffmpeg-8.0/build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I/usr/include/openssl" \
  --extra-ldflags="-L/usr/lib/openssl -L/lib/x86_64-linux-gnu/" \
  --extra-libs="-O3 -fPIC -lpthread -lm -lssl -lcrypto" \
  --bindir="/home/xxx/ffmpeg-8.0/bin" \
  --enable-libass \
  --enable-libfreetype \
  --enable-libvorbis \
  --enable-pic \
  --enable-shared \
  --enable-openssl 
make -j8
make install

把FFmpeg库添加到环境变量中:

gedit ~/.bashrc

# 在bashrc文件中添加
export PATH="/home/xxx/ffmpeg-8.0/bin:$PATH"
export LD_LIBRARY_PATH=/home/xxx/ffmpeg-8.0/build/lib

source ~/.bashrc

查询FFmpeg库版本:

ffmpeg -version

输出:

ffmpeg version 8.0 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/home/nanhao/BE/ffmpeg/ffmpeg-8.0/build --pkg-config-flags=--static --extra-cflags=-I/usr/include/openssl --extra-ldflags='-L/usr/lib/openssl -L/lib/x86_64-linux-gnu/' --extra-libs='-O3 -fPIC -lpthread -lm -lssl -lcrypto' --bindir=/home/nanhao/BE/ffmpeg/ffmpeg-8.0/bin --enable-libass --enable-libfreetype --enable-libvorbis --enable-pic --enable-shared --enable-openssl
libavutil      60.  8.100 / 60.  8.100
libavcodec     62. 11.100 / 62. 11.100
libavformat    62.  3.100 / 62.  3.100
libavdevice    62.  1.100 / 62.  1.100
libavfilter    11.  4.100 / 11.  4.100
libswscale      9.  1.100 /  9.  1.100
libswresample   6.  1.100 /  6.  1.100

Exiting with exit code 0

支持GPU解码的ffmpeg库:

# 安装
cd /home/xxx/ffmpeg_lib
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

#编译
cd nv-codec-headers
make && sudo make install PREFIX=/home/xxx/ffmpeg_lib/nv-codec-headers/build

# 配置环境变量
export PKG_CONFIG_PATH=/home/xxx/ffmpeg_lib/nv-codec-headers/build/lib/pkgconfig:$PKG_CONFIG_PATH
./configure \
  --prefix="/home/xxx/ffmpeg-8.0/build" \
  --enable-gpl \
  --enable-nonfree \
  --extra-cflags="-I/usr/local/cuda/include -I/home/xxx/ffmpeg_lib/nv-codec-headers/build/include/ffnvcodec" \
  --extra-ldflags="-L/usr/local/cuda/lib64 -L/home/xxx/ffmpeg_lib/nv-codec-headers/build/lib" \
  --extra-libs="-lnvcuvid -lnvidia-encode" \
  --bindir="/home/xxx/ffmpeg-8.0/bin" \
  --enable-nvdec \
  --enable-cuvid \
  --enable-ffnvcodec \
  --disable-static \
  --enable-shared

未完待续…

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐