ubuntu18.04中基于Docker搭建tensorflow-gpu开发环境
前提条件就不多提啦,首先得装好nvidia驱动和Docker19以上版本,网上有很多教程。
尝试1:拉取现有的deepo镜像制作
deepo是一个囊括几乎所有深度学习框架的开源镜像,这里我们选择拉取一个tensorflow-gpu版本的,避免占用储存过大。
# 拉取
root@master:/home/hqc# docker pull ufoym/deepo:tensorflow-py36# 查看该容器是否可见
root@master:/home/hqc# sudo docker run --rm --gpus all ufoym/deepo:tensorflow-py36 nvidia-smi+-----------------------------------------------------------------------------+| NVIDIA-SMI 495.44 Driver Version: 495.44 CUDA Version: 11.5 ||-------------------------------+----------------------+----------------------+| 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 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A || 23% 38C P8 9W / 250W | 11MiB / 11178MiB | 0% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|+-----------------------------------------------------------------------------+
# 可见# 进入容器
root@master:/home/hqc# docker run -gpus all -it ufoym/deepo:tensorflow-py36 bash
root@6ef50267dc04:/# nvidia-smiTue Jun 7 05:59:34 2022 +-----------------------------------------------------------------------------+| NVIDIA-SMI 495.44 Driver Version: 495.44 CUDA Version: 11.5 ||-------------------------------+----------------------+----------------------+| 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 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A || 23% 38C P8 9W / 250W | 11MiB / 11178MiB | 0% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|+-----------------------------------------------------------------------------+
# 也可见# 验证
root@6ef50267dc04:/# pythonPython 3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import tensorflow as tf2022-06-07 05:35:03.266686: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:35:03.266704: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.>>> tf.test.is_gpu_available() # 查看gpu是否可获取WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.Instructions for updating:Use `tf.config.list_physical_devices('GPU')` instead.2022-06-07 05:03:51.592175: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX512FTo enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.2022-06-07 05:03:51.594231: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set2022-06-07 05:03:51.594877: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcuda.so.12022-06-07 05:03:51.631522: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero2022-06-07 05:03:51.631807: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1720] Found device 0 with properties: pciBusID: 0000:01:00.0 name: NVIDIA GeForce GTX 1080 Ti computeCapability: 6.1coreClock: 1.582GHz coreCount: 28 deviceMemorySize: 10.92GiB deviceMemoryBandwidth: 451.17GiB/s2022-06-07 05:03:51.631894: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:03:51.631989: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcublas.so.11'; dlerror: libcublas.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:03:51.632046: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcublasLt.so.11'; dlerror: libcublasLt.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:03:51.633279: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.102022-06-07 05:03:51.633571: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.102022-06-07 05:03:51.634825: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.102022-06-07 05:03:51.634947: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:03:51.634997: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudnn.so.8'; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib642022-06-07 05:03:51.635004: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.Skipping registering GPU devices...2022-06-07 05:03:51.686019: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1261] Device interconnect StreamExecutor with strength 1 edge matrix:2022-06-07 05:03:51.686037: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1267] 0 2022-06-07 05:03:51.686041: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1280] 0: N False# 为False,因此gpu不可用# 查看cuda
root@6ef50267dc04:/# nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2019 NVIDIA CorporationBuilt on Sun_Jul_28_19:07:16_PDT_2019Cuda compilation tools, release 10.1, V10.1.243
# 可见cuda也有,只是比宿主机更低的版本,不知是不是与此有关
多方查找原因无法解决,决定尝试另一种方法
尝试2:基于带有cudn的ubuntu镜像制作
1 拉取官方的nvidia/cuda镜像
需要注意,选择的cuda版本需要满足宿主机的显卡驱动需求:官网
宿主机的驱动版本为Driver Version: 495.44
,因此选用11.0的即可
拉取镜像官方地址
这里选择11.0.3-cudnn8-devel-ubuntu18.04
,复制命令:
docker pull nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04
镜像比较大,需要耐心等待,拉取中~
拉取完成:
root@master:/home/hqc# docker pull nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.0411.0.3-cudnn8-devel-ubuntu18.04: Pulling from nvidia/cudae4ca327ec0e7: Pull complete 0fa9fc055636: Pull complete 448bb2d7fba5: Pull complete a084e2627368: Pull complete de932d3a14d8: Pull complete ebe7db8e97e0: Pull complete 66fef8aabad3: Pull complete 9696f5331161: Pull complete 7799e2177407: Pull complete 56d35ebee226: Pull complete Digest: sha256:f56265faac1e5cf5062c466c250b65be0cfd18e2146cf06056f1376f94c08bacStatus: Downloaded newer image for nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04docker.io/nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04
2 通过镜像建立容器
通过以下指令:
sudo docker run -it --name ubuntu-tf-gpu --gpus all -p 1234:22 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04
说明:
-it
:以交互模型运行容器,也就是运行容器后不退出
--name ubuntu-tf-gpu
:将容器命名为ubuntu-tf-gpu,否则会随机命名
--gpus all
:允许使用所有的gpu,这个非常重要,没有这个参数gpu无法正常使用
-p 1234:22
:将宿主机的1234端口映射到容器的22端口(ssh通用端口),为了ssh链接做准备
nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04
:镜像名:版本号
root@master:/home/hqc# docker run -it --name ubuntu-tf-gpu --gpus all -p 1234:22 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04
root@6feb1814fb68:/# nvidia-smiTue Jun 7 07:35:28 2022 +-----------------------------------------------------------------------------+| NVIDIA-SMI 495.44 Driver Version: 495.44 CUDA Version: 11.5 ||-------------------------------+----------------------+----------------------+| 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 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A || 23% 38C P8 9W / 250W | 11MiB / 11178MiB | 0% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|+-----------------------------------------------------------------------------+
root@6feb1814fb68:/# nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2020 NVIDIA CorporationBuilt on Wed_Jul_22_19:09:09_PDT_2020Cuda compilation tools, release 11.0, V11.0.221Build cuda_11.0_bu.TC445_37.28845127_0
# 可见容器内的cuda为11.0版本
3 再次进入容器
# ctrl+d退出交互式容器后容器名并没有消除,因此再次想进入时会报错
root@master:/home/hqc# docker run -it --name ubuntu-tf-gpu --gpus all -p 1234:22 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04
docker: Error response from daemon: Conflict. The container name "/ubuntu-tf-gpu" is already in use by container "6feb1814fb68986b382f5c4c2a3a28ba59c19b4c2a172786f31cf0aa6cf4de72". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.# 找到关闭的容器ID
root@master:/home/hqc# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES048bc6bb1fbc 74060cea7f70 "kube-apiserver --ad…" 4 minutes ago Exited (0) 2 minutes ago k8s_kube-apiserver_kube-apiserver-master_kube-system_7cedabdfa181aeeef915699b4c38b029_242726feb1814fb68 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04 "bash" 9 minutes ago Exited (0) 7 minutes ago ubuntu-tf-gpu6ef50267dc04 ufoym/deepo:tensorflow-py36 "bash" 2 hours ago Exited (1) About an hour ago thirsty_aryabhata# 重启容器
root@master:/home/hqc# docker start 6feb1814fb686feb1814fb68
# 再次进入
root@master:/home/hqc# docker exec -it 6feb1814fb68 /bin/bash
# 或者
root@master:/home/hqc# docker attach 6feb1814fb68
root@6feb1814fb68:/#
工作中我们一般使用 docker run -d image:tag /bin/bash
启动容器,再通过docker exec -it 容器ID /bin/bash
,最为安全可靠。
# 杀死进程
root@master:/home/hqc# docker kill 6feb1814fb686feb1814fb68
# 容器还是存在,只是被关闭了而已# 删除容器
root@master:/home/hqc# docker rm -f 6feb1814fb686feb1814fb68
4 配置python3.6
# 创建并进入一个依赖文件夹
root@1dcc1e5f8ae7:/# mkdir requirement
root@1dcc1e5f8ae7:/# cd requirement/
root@1dcc1e5f8ae7:/requirement# ls
root@1dcc1e5f8ae7:/requirement# sudo apt-get install python3.6 python3-pipbash: sudo: command not found # 还不能用sudo
# 更新一下先
root@1dcc1e5f8ae7:/requirement# apt-get updateGet:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB] Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] Get:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://security.ubuntu.com/ubuntu bionic-security/restricted amd64 Packages [957 kB] Get:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] Get:6 http://archive.ubuntu.com/ubuntu bionic/restricted amd64 Packages [13.5 kB] Get:7 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages [1344 kB] # 安装
root@1dcc1e5f8ae7:/requirement# apt-get install python3.6 python3-pipReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed:dbus dh-python file gir1.2-glib-2.0 libapparmor1 libdbus-1-3 libexpat1 libexpat1-dev libgirepository-1.0-1 libglib2.0-0 libglib2.0-data libicu60 libmagic-mgc libmagic1 libmpdec2 libpython3-dev...python3-secretstorage python3-setuptools python3-six python3-wheel python3-xdg python3.6 python3.6-dev python3.6-minimal shared-mime-info xdg-user-dirs0 upgraded, 50 newly installed, 0 to remove and 48 not upgraded.Need to get 65.9 MB of archives.After this operation, 167 MB of additional disk space will be used.Do you want to continue? [Y/n] y...
5 配置虚拟环境管理工具Virtualenv
# 安装
root@1dcc1e5f8ae7:/requirement# pip3 install -U virtualenvCollecting virtualenv...Successfully installed distlib-0.3.4 filelock-3.4.1 importlib-metadata-4.8.3 importlib-resources-5.4.0 platformdirs-2.4.0 six-1.16.0 typing-extensions-4.1.1 virtualenv-20.14.1 zipp-3.6.0# 创建一个专门放虚拟环境的文件夹
root@1dcc1e5f8ae7:/requirement# cd ..
root@1dcc1e5f8ae7:/# mkdir environments
root@1dcc1e5f8ae7:/# cd environments/# 创建名为tf2_py3的虚拟环境
root@1dcc1e5f8ae7:/environments# virtualenv --system-site-packages -p python3.6 ./tf2_py3created virtual environment CPython3.6.9.final.0-64 in 147mscreator CPython3Posix(dest=/environments/tf2_py3, clear=False, no_vcs_ignore=False, global=True)seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)added seed packages: pip==21.3.1, setuptools==59.6.0, wheel==0.37.1activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator# 激活该环境
root@1dcc1e5f8ae7:/environments# source tf2_py3/bin/activate
6 虚拟环境中配置tensorflow-gpu2.4.0
# 在虚拟环境中安装tensorflow-gpu2.4版本
(tf2_py3) root@1dcc1e5f8ae7:/environments# pip install --upgrade tensorflow-gpu==2.4.0
Collecting tensorflow-gpu==2.4.0Downloading tensorflow_gpu-2.4.0-cp36-cp36m-manylinux2010_x86_64.whl (394.7 MB)...Successfully installed absl-py-0.15.0 astunparse-1.6.3 cachetools-4.2.4 certifi-2022.5.18.1 charset-normalizer-2.0.12 dataclasses-0.8 flatbuffers-1.12 gast-0.3.3 google-auth-2.6.6 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 grpcio-1.32.0 h5py-2.10.0 keras-preprocessing-1.1.2 markdown-3.3.7 numpy-1.19.5 oauthlib-3.2.0 opt-einsum-3.3.0 protobuf-3.19.4 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.27.1 requests-oauthlib-1.3.1 rsa-4.8 six-1.15.0 tensorboard-2.9.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 tensorflow-estimator-2.4.0 tensorflow-gpu-2.4.0 termcolor-1.1.0 typing-extensions-3.7.4.3 urllib3-1.26.9 werkzeug-2.0.3 wrapt-1.12.1
验证tensorflow-gpu环境:
(tf2_py3) root@1dcc1e5f8ae7:/environments# pythonPython 3.6.9 (default, Mar 15 2022, 13:55:28) [GCC 8.4.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import tensorflow as tf2022-06-07 08:52:18.240052: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0>>> print(tf.__version__)2.4.0>>> tf.test.is_gpu_available()WARNING:tensorflow:From <stdin>:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.Instructions for updating:Use `tf.config.list_physical_devices('GPU')` instead....2022-06-07 08:52:59.482723: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1406] Created TensorFlow device (/device:GPU:0 with 10261 MB memory) -> physical GPU (device: 0, name: NVIDIA GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)True
# 成功!!!
7 其他配置
1 libssl-dev
:传输敏感数据
(tf2_py3) root@1dcc1e5f8ae7:/requirement# apt-get install libssl-devReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed:libssl1.1Suggested packages:libssl-docThe following NEW packages will be installed:libssl-devThe following packages will be upgraded:libssl1.11 upgraded, 1 newly installed, 0 to remove and 47 not upgraded....
2 make
:自动编译
(tf2_py3) root@1dcc1e5f8ae7:/requirement# makemake: *** No targets specified and no makefile found. Stop.
(tf2_py3) root@1dcc1e5f8ae7:/requirement# apt-get install make Reading package lists... DoneBuilding dependency tree Reading state information... Donemake is already the newest version (4.1-9.1ubuntu1).make set to manually installed.0 upgraded, 0 newly installed, 0 to remove and 47 not upgraded.
3 NFS
:文件同步共享
网络文件系统(NFS)是一个分布式文件系统协议,它允许你通过网络共享远程文件夹。通过 NFS,你可以将远程文件夹挂载到你的系统上,并且操作远程机器的文件,就像本地文件一样方便。
nfs-common
:客户端,功能较少
nfs-kernel-server
:服务端,功能更全(推荐)
但由于好像比较复杂,以后再考虑
4 git
:代码管理工具 & vim
:代码编辑工具
版本控制器,更方便我们管理这些不同版本的文件
(tf2_py3) root@1dcc1e5f8ae7:/requirement# gitbash: git: command not found
(tf2_py3) root@1dcc1e5f8ae7:/requirement# apt-get install gitReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed:...After this operation, 49.5 MB of additional disk space will be used.Do you want to continue? [Y/n] YGet:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 multiarch-support amd64 2.27-3ubuntu1.6 [6960 B]...(tf2_py3) root@1dcc1e5f8ae7:/requirement# apt-get install vim...
8 更改该容器为镜像并保存(可重新导入)
# 退出容器
(tf2_py3) root@1dcc1e5f8ae7:/# exit
exit
# 查看容器ID
root@master:/home/hqc# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1dcc1e5f8ae7 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04 "bash" 2 hours ago Exited (0) About a minute ago ubuntu-tf-gpu# 打包成镜像
root@master:/home/hqc# docker commit 1dcc1e5f8ae7 tf-gpu2.4.0sha256:141cba844accecf332ce7434ee949b69b6e9c4fc62e0edc05e5645304b622bff
root@master:/home/hqc# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtf-gpu2.4.0 latest 141cba844acc 8 seconds ago 9.76GB# 保存到指定文件夹
root@master:/home/hqc# docker save -o ./docker_learning/tf-gpu2.4.0.tar tf-gpu2.4.0
# 可以在任何地方载入
root@master:/home/hqc# docker load -i ./docker_learning/tf-gpu2.4.0.tarLoaded image: tf-gpu2.4.0:latest
ubuntu18.04中基于Docker搭建tensorflow-gpu开发环境相关推荐
- ubuntu20.04.1 64位搭建嵌入式linux开发环境
目录 背景 开发环境的搭建 1.交叉编译工具的安装 2.开发工具和依赖库的安装 2.1. 必需部分 2.2.可选部分 ubuntu20.04.1 64位配置和编译Linux3.0内核 背景 市面上的嵌 ...
- win10和Ubuntu16.04中基于anaconda安装TensorFlow(CPU+GPU)
目录 Windows系统下安装步骤 安装CPU版本的tensorflow 安装GPU版本的tensorflow(使用GPU加速的tensorflow模型训练速度更快) Ubuntu中的安装步骤 安装C ...
- 基于Docker搭建hdfs分布式实验环境
理论知识 Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中, ...
- 【Windows系统】基于vscode搭建go语言开发环境
微信公众号:CurryCoder的程序人生 怕什么真理无穷,进一寸有一寸的欢喜 1.golang安装包下载与安装 关于vscode的下载,请参见历史文章Ubuntu16.04下搭建vscode的C++ ...
- Ubuntu18.04配置VS Code+CMake的C++开发环境
2020-06-14 首先,介绍自己电脑:Ubuntu18.04.VS Code 1.46版 本文目的:为VS Code配置好C++ 开发环境,以及VS Code +CMake的配置 对于C++ 工程 ...
- ubuntu18.04在双显卡笔记本安装cuda开发环境
1 准备 目标笔记本:dell inspiron 5577 windows主机 ultraiso软件 ubuntu18.04的安装iso镜像:ubuntu-18.04-desktop ...
- 基于Eclipse搭建STM32开源开发环境
最近项目不忙,想着没事看看简单的嵌入式,弄弄物联网什么的.于是就从廉价的STM32开刀了.因为一直是做PC软件开发的,那VS的智能感知那叫一个爽啊,相比之下,觉得这个Keil简直就像文本编辑器一样lo ...
- docker初识_初识 docker 搭建自己的开发环境
换了一台设备,程序猿嘛第一件事肯定是先把开发环境搭建起来,以前为了方便都是搞的集成环境,这次准备下载集成环境的时候,突然想起 docker 这个东西,在下虽然了解一些概念性的东西但一直为曾实践.人嘛, ...
- python 生成exe anaconda_Anaconda 搭建 Tensorflow 2 开发环境
最近更新:2020/02/16 1 anaconda 下载 anaconda Anaconda Python/R Distribution - Free Downloadwww.anaconda.c ...
最新文章
- Cisco 路由器防火墙配置命令及实例
- 设计模式 — 结构型模式 — 适配器模式
- Python遥感数据主成分分析
- 关于静态局部全局变量
- 关于部署传统的Dynamic Web项目
- 探测与响应是各企业机构在2017年的首要安全事务
- 直接拿来用!GitHub10个开源免费的后台管理面板
- 分段显示 linux_ArchAudit:一款在 Arch Linux 上检查易受攻击的软件包的工具 | Linux 中国...
- ssm医院疫情隔离室管理系统答辩PPT模板
- 如何申请Gmail邮箱?_manok_新浪博客
- 《Miss Talk》第07期:对话拓课云联合创始人兼CTO 王晓伟
- hadoop学习之路(2)
- android loadsvm raw,OpenCV机器学习:Android上利用SVM实现手写体数字识别
- JAVA:货币金额类型、精确小数类型数值的定义BigDecimal和基本运算操作
- window版ELK搭建
- dumpbin查看dll中函数名字的问题
- C#中Atan()与Atan2()
- alex机器人 ser_机器人抓取时怎么定位的?用什么传感器来检测?
- docker kali 安装 xfce4 桌面 + tigervnc + novnc
- CocoaPods版本升级——本地CocoaPods更新