Caffe学习系列(三)Docker安装及一些问题的记录
前言:
Docker安装倒是很简单,按照步骤轻松完成,但是在联网方面还是出现问题,大概是伟大的祖国防火墙将其拦下,但在开发中要遇山开山,见水搭桥。在其中我将解决方法记录下来,每次解决了困难想分享找不到地方,就把它写下来自己看吧,见证自己的成长。
正文:
(一)安装Docker
安装环境:Ubuntu 16.04(LTS)
1、简单方法
# sudo apt-get update
# sudo apt-get install docker
完成! 但是这种方法有一个缺点:安装的不一定是最新的docker
2、我采用的方法:
升级source列表并保证https和ca证书成功安装
# apt-get update
# apt-get install apt-transport-https ca-certificates
增加新的GPG 密钥
# apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
新增或编辑source列表里的docker.list文件
# gedit /etc/apt/sources.list.d/docker.list //如果不存在就新增
按照系统版本增加entry(Ubuntu Xenial 16.04 (LTS))在list文件里增加如下内容:
deb https://apt.dockerproject.org/repo ubuntu-xenial main
重新执行更新操作,并删除老的repo
# apt-get purge lxc-docker //没有安装的话,跳过
从14.04版本以上开始docker推荐安装linux-image-extra
# apt-get install linux-image-extra-$(uname -r)
有些内容可能会系统里已经有,所以无关紧要。
最关键的一步:
安装docker
# apt-get update
# apt-get install docker-engine
# service docker start
# docker run hello-world
如果打印一堆关于hello-world的信息说明安装完成。
(二)解决下载镜像被阻的问题
我要用Docker下载网上的镜像进行深度学习,结果下拉的时候出现如下错误:
root@ygh:~/deep_ocr_workspace# docker pull jinpengli/deep_ocr_cpu_docker:latest
Error response from daemon: Get https://registry-1.docker.io/v2/jinpengli/deep_ocr_cpu_docker/manifests/latest: read tcp 10.103.247.60:55446->50.17.62.194:443: read: connection reset by peer
显示 connection reset by peer,TCP连接被阻断了,50.17.62.194这个ip在这里是不能用的。所以要找到其它可用 IP。
解决方案:
1、找到Docker可用ip:
输入下列命令:
# dig auth.docker.io
打印如下:
root@ygh:~/deep_ocr_workspace# dig auth.docker.io ; <<>> DiG 9.10.-P4-Ubuntu <<>> auth.docker.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
;; flags: qr rd ra; QUERY: , ANSWER: , AUTHORITY: , ADDITIONAL: ;; OPT PSEUDOSECTION:
; EDNS: version: , flags:; udp:
;; QUESTION SECTION:
;auth.docker.io. IN A ;; ANSWER SECTION:
auth.docker.io. IN A 52.5.246.212
auth.docker.io. IN A 50.17.62.194
auth.docker.io. IN A 34.193.147.40 ;; Query time: msec
;; SERVER: 127.0.1.1#(127.0.1.1)
;; WHEN: Tue Mar :: CST
;; MSG SIZE rcvd:
我们在这里选用34.193.147.40这个ip,将它替换掉即可。
2、修改IP:
改/etc/hosts强制 docker.io 相关的域名解析到这个可用 IP :
步骤如下:
# gedit /etc/hosts
然后在最后一行加上下面这一行内容即可:
34.193.147.40 registry-.docker.io auth.docker.io
到这里就解决问题了。之后再使用
# docker pull jinpengli/deep_ocr_cpu_docker:latest
就可以成功pull文件了。
(三)解决将Docker内文件转移到主机的方法
1、首先要挂在Docker容器:
# sudo docker run -ti --volume=${HOME}/deep_ocr_workspace:/workspace jinpengli/deep_ocr_cpu_docker:latest /bin/bash
然后另开一个终端:
查看容器名称或者id:
# docker ps
然后拷贝即可:
# docker cp <containerId>:/file/path/within/container /host/path/target
比如:
root@ygh:~/deep_ocr_workspace# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45e0a73507ce jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" seconds ago Up seconds condescending_brahmagupta # docker cp 45e0a73507ce:/workspace/caffe_dataset_lower_eng/images /home/ygh/program/
这样就完成拷贝至主机的工作。
将主机文件拷贝到容器在工作中也有涉及:
通过如上方法获得CONTAINER ID,然后执行下面的命令:
# sudo docker cp host_path containerID:container_pat
比如:
# docker cp id_test1.png a7cd897f38bc:/workspace/data
完成此工作!
(四)启动现有的容器
当我们遇到需要启动上次建立的容器的时候,我找到了解决办法,如下:
1、查看现有的容器列表:
# docker ps -a
root@ygh:/home/ygh/caffe# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7435041f1a0f jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" hours ago Up hours eloquent_cray
25f572cc7a93 jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" days ago Exited () seconds ago flamboyant_goldwasser
a7cd897f38bc jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" days ago Exited () days ago tender_davinci
可以看到如上列表,此时我们想启动第二个容器,有很多方法:
docker start/stop/restart<container> :开启/停止/重启container
docker start [container_id] :再次运行某个container(包括历史container)
docker attach [container_id]:连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach一个container实例)
docker start -i <container>:启动一个container并进入交互模式(相当于先start,在attach)
步骤如下:
# docker start -i 25f572cc7a93
就可以直接启动,也可以先start 再 attach即可。
by still、
Caffe学习系列(三)Docker安装及一些问题的记录的更多相关文章
- Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn
一.版本 linux系统:Ubuntu 14.04 (64位) 显卡:Nvidia K20c cuda: cuda_7.5.18_linux.run cudnn: cudnn-7.0-linux-x6 ...
- Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...
- Caffe 学习系列
学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...
- Caffe学习系列(23):如何将别人训练好的model用到自己的数据上
caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...
- Caffe学习系列(22):caffe图形化操作工具digits运行实例
上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的” Images" ...
- Caffe学习系列——工具篇:神经网络模型结构可视化
Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py ...
- Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...
- 转 Caffe学习系列(12):训练和测试自己的图片
学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...
- RabbitMQ学习系列三-C#代码接收处理消息
RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理 http://www.80iter.com/blog/1438251320680361 http://www. ...
- Caffe学习系列(12):训练和测试自己的图片--linux平台
Caffe学习系列(12):训练和测试自己的图片 学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...
随机推荐
- 网上流传的长盛不衰的Steve Jobs(乔布斯) 14分钟“Stay Hungry, Stay Foolish”演讲视频
http://timyang.net/misc/speech/附:网上流传的长盛不衰的Steve Jobs 14分钟“Stay Hungry, Stay Foolish”演讲视频 (原视频地址:htt ...
- Asp.net MVC 插件式应用框架
Asp.net MVC 插件式应用框架 2013年05月13日 10:16供稿中心: 互联网运营部 摘要:这几年来做了很多个网站系统,一直坚持使用asp.net mvc建站,每次都从头开始做Layou ...
- full join 时通过辅助列序号列消除笛卡尔积重复列
如果没有序号列,那么如果领灯表里有3条数据,还灯表里面有2条数据,full join后就是3*2=6条数据 --1.领灯表,每天每班每人允许重复数据 select ID ,ROW_NUMBER() o ...
- C#中后台线程和UI线程的交互
在C#中,从Main()方法开始一个默认的线程,一般称之为主线程,如果在这个进行一些非常耗CPU的计算,那么UI界面就会被挂起而处于假死状态,也就是说无法和用户进行交互了,特别是要用类似进度条来实时显 ...
- 结合jquery的前后端加密解密 适用于WebApi的SQL注入过滤器 Web.config中customErrors异常信息配置 ife2018 零基础学院 day 4 ife2018 零基础学院 day 3 ife 零基础学院 day 2 ife 零基础学院 day 1 - 我为什么想学前端
在一个正常的项目中,登录注册的密码是密文传输到后台服务端的,也就是说,首先前端js对密码做处理,随后再传递到服务端,服务端解密再加密传出到数据库里面.Dotnet已经提供了RSA算法的加解密类库,我们 ...
- intelligent_cam
https://github.com/shengkaisun/intelligent_cam/tree/772fe0e4d315f83ba01134389c6b618b1ce40aaf intelli ...
- 千万级的大表!MySQL这样优化更好
对于一个千万级的大表,现在可能更多的是亿级数据量,很多人第一反应是各种切分,可结果总是事半功倍,或许正是我们优化顺序的不正确.下面我们来谈谈怎样的优化顺序可以让效果更好. MySQL数据库一般都是按照 ...
- oracle中建同名
create synonym TD_B_REDIS_COUNT for ucr_param.TD_B_REDIS_COUNT;grant DELETE,UPDATE,INSERT,SELECT on ...
- jsonp 小结
JSONP是JSON with Padding的略称. 它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实 ...
- 从头认识java-17.5 堵塞队列(以生产者消费者模式为例)
这一章节我们来讨论一下堵塞队列.我们以下将通过生产者消费者模式来介绍堵塞队列. 1.什么是堵塞队列?(摘自于并发编程网对http://tutorials.jenkov.com/java-concurr ...