Docker和conda的基本操作与命令

Docker    

关于docker的基本概念和一些基本使用情况,可以参考GitHub上的这些文章。但是上面有些操作还是太文章话,没有很好的举例子说明,所以对于刚入门的爱好者理解起来有些困难。关于docker的安装,网上有太多的例子,这里就不在叙述。

    首先由一个名为openvino的框架部署来讲起--openvino,它是因特尔,对,就是制造CPU公司的那家,提供部署机器学习的一个框架,它把caffe,TensorFlow等流行的机器学习框架训练出来的模型,转换为自己框架可以识别的模型,然后提供推理预测过程。总之,就是转换模型和推理阶段的应用。这样因特尔inter可以利用自家的CPU或者GPU对训练出来的模型进行优化运行,速度上比直接利用TensorFlow、caffe等框架跑在CPU上要快一些。

   这里就是利用docker部署的openvino框架,首先下载代码:

git clone https://github.com/misnowman/openvino.git

进入到下载后openvino的文件夹下发现就两个文件:demo.sh和Dockerfile。

可以把Dockerfile看成一个制作docker镜像的一个脚本文件。有点类似cmake。

cd openvino
docker build .

然后,关于openvino的docker镜像文件就制作完成了。

如果想要详细的了解openvino,请看官网。

另外,网上有很多已经制作出来相关的镜像文件,可以通过docker进行搜索的,通过docker run进行运行时,如果本地找不到就会网上下载。比如说:

sudo docker search openvino

会出现:

选择一个直接运行(docker run  ....)即可。

镜像和容器

    可以这么理解镜像(Image)和容器(container)的关系:容器是镜像的一个实例。这句话是不是在学习面向对象类语言很容易听到的一句话。我们可以想象成:人,是一个抽象的类,那么小明,小红这个有血有肉的实物,即是人的一个实例。制作了镜像文件,就可以实例出来很多很多容器,容器的初试状态都是一样的。实例出来一个容器,就可以对该容器里面部署好的东西进行操作或者添加了。

我们已经制作出来一个镜像了(openvino),那么如何查看我们只做的镜像呢?命令行键入

docker images

可以看到:

我已经安装了四个镜像文件了,而第一个是刚刚安装的那个openvino框架的镜像。并且想当尴尬的是居然没有名字,只有IMAGE_ID,还好的是,我们创建一个镜像的实例--容器也可以用IMAGE-ID.

sudo docker run -i -t f15f452e3eef /bin/bash

// sudo docker run -it ubuntu /bin/bash

第二个,让我杠掉的是上图中第三个名为Ubuntu的镜像文件。-i,-t,或者合并起来-it的意思是

  • docker run:启动container

  • ubuntu:你想要启动的image

  • -t:进入终端

  • -i:获得一个交互式的连接,通过获取container的输入

  • /bin/bash:在container中启动一个bash shell(就是命令行交互)

生成了容器,这个就是一个独立的环境了,然后就可以在这个独立环境中进行相关操作。

常用命令

在另起一个命令行窗口,通过一些命令,我们可以查看或操作电脑中的容器和镜像操作

docker ps

列出正在运行中的容器。

docker ps -a 

列出创建后并存在的所有容器。包括正在前台运行,后台退出等等。

docker rm XXX

删除容器,xxx表示容器名称或者其ID。通过docker ps -a 等操作可以获得。

docker rmi   XXX

删除镜像,XXX 代表着镜像的名字或者ID。通过docker images命令可以获得镜像的信息。但是删除前必须删除有镜像实例化出来的容器,否则会爆出如下类似错误:

Error response from daemon: conflict: unable to delete 7698f282e524 (cannot be forced) - image has dependent child images

所以,我们要先找到由该镜像生成的所有容器,删除所有容器后才能顺利删除其镜像。

docker commit  [container id] [image]

保存对容器的修改。我们在run后,由镜像实例化了一个容器A,在容器A中做了一些配置或者对部署的服务进行了升级,如果没有commit,那么下次再次run Image并生成容器B的时候,该容器B仍然是初始化配置。那么通过commit命令后,再次run 镜像时,生成的原始环境就是升级后的配置了。但是制作镜像文件时尽量不要这么做,原因可参考这篇文章

image 你可以自己设置名称号,并不一定是容器的抽象镜像文件名,比如新名字可以为:currentImage:V10.10.10。:后面表示的是tag。

docker stop container name /container id]

停止docker容器的服务

docker start [container name /container id]

启动容器,只是启动了,你会发现还无法和该容器进行交互。

docker attach [container name /container id] 

弹出容器交互窗口(或者说进入了容器环境)

docker exec -i -t [container name/container id] /bin/bash

同样是对开启的容器进行交互操作,但是和attach命令的区别是,exec类似于ssh和远程Linux server交互。因此在退出容器的时候,attach可以使用control+d或者命令行键入exit方式,而exec只能用exit。


docker inspect -f '{{.Id}}' [container name/container id]   

获取容器的ID全称([container full ID])

docker inspect [container name/container id] 

获取从起的详细信息

docker cp 本机文件路径 ID全称:容器中的文件路径

从本机文件传输到容器。

docker cp ID全称:容器中的文件路径 本机文件路径

从容器文件到本机的传输

docker可以类似git一样提交到GitHub

可以参考该博客

conda

安装:

conda可以安装两个版本:anaconda和miniconda,前者包含了一些常用的包,后则为精简版,需要什么就要装什么.但是所谓的常用是一个模糊概念,上面的常用并不带着自己也常用,因此这里使用miniconda.

下载:

#linux
wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
# mac
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh

使用lastest,即最新版的conda也是随着python的版本更新而更新的. 

安装:

chmod 777 Miniconda3-latest-Linux-x86_64.sh #给执行权限
bash Miniconda3-latest-Linux-x86_64.sh #运行

防止conda污染原来的环境,污染后会把原来设置好的东西进行更改,因此在conda加入环境变量的时候选择no,即在安装的时候碰到此语句选择no:

....
installation finished.
Do you wish the installer to prepend the Miniconda3 install location to PATH in your '.....'.bashrc ? [yes|no]
[no] >>> no
# 这里选择no

此时conda命令仍然不可用,此时从你电脑的home路径下进入miniconda3的bin下,将里面的activate文件改变一下权限:

chmod 777 activate 

 在该目录下启动conda

. ./activate 
#这里的第一个点跟source是一样的效果。

此时命令窗口会有base字样.这时候输入conda list就会带有的基础包.

接下来,需要为conda添加channel,这里的作用好比是,以后你下载工具包的时候,需要向channel里面找.官方添加的方式为:

conda config --add channels bioconda
conda config --add channels conda-forge

 但是官方有可能速度会慢,添加国内的镜像点有可能会改善,这里是清华的

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/

北大的:

conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/r/

 显示已经添加的channel:

# 显示安装的
 conda config --set show_channel_urls yes 
 conda config --get channels
# 查看添加的channel
vim ~/.condarc

常用命令

环境相关

conda的目的就是各自的环境独立.因此我们想要使用就必须先创建环境,安装好以后激活的是base环境.

# 创建新的环境,-n 为环境名字.后面跟的是python版本. 添加-y参数可以跳过安装的确认过程
conda create -n my_env python=3.8
或者
conda create --name my_env python=3.8
# 进入环境
conda activate my_env
# 退出当前环境
conda deactivate
#删除环境
conda remove -n my_env --all
# 重命名,分为两步,1:就环境被克隆到创建的新环境,2:删除旧环境
conda create -n new_env --clone old_env
conda remove -n old_env --all

环境工具包管理:

# 当前环境下的已经安装工具包
conda list
# 查看某个具体环境
conda list -n xxx
# 在当前环境安装工具包:
# 以指定安装tensorflow的1.14版本为例子
conda install tensorflow-gpu==1.14
# 有的制定版本没有,需要查看channel内有那些版本:
conda search tensorflow
# 有些工具包conda没有,但是可以通过pip进行安装,在当前环境进行pip安装,即安装到当前环境,并不是系统环境.例如
pip install tensorflow-gpu==1.14
# 删除某个工具包同样:
conda uninstall tensorflow
conda remove tensorflow
# 删除某个环境下的工具包
conda remove -n xxx tensorflow

conda信息

#可以通过下列三个命令任何一个查看已经创建的环境列表
conda env list
conda info --env
conda info -e

查看当前conda的版本信息
conda -V 或 conda --version

其他

每次进入终端terminal时会自动进入base环境,可以通过

conda config --set auto_activate_base false

来进行设置.

如果想要每次进入base环境,则可以把上面命令行中的false改成true.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值