前言:

Docker安装倒是很简单,按照步骤轻松完成,但是在联网方面还是出现问题,大概是伟大的祖国防火墙将其拦下,但在开发中要遇山开山,见水搭桥。在其中我将解决方法记录下来,每次解决了困难想分享找不到地方,就把它写下来自己看吧,见证自己的成长。

正文:

(一)安装Docker

安装环境:Ubuntu 16.04(LTS)

1、简单方法

  1. # sudo apt-get update
  2. # sudo apt-get install docker

完成! 但是这种方法有一个缺点:安装的不一定是最新的docker

2、我采用的方法:

升级source列表并保证https和ca证书成功安装

  1. # apt-get update
  2. # apt-get install apt-transport-https ca-certificates

增加新的GPG 密钥

  1. # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

新增或编辑source列表里的docker.list文件

  1. # gedit /etc/apt/sources.list.d/docker.list //如果不存在就新增

按照系统版本增加entry(Ubuntu Xenial 16.04 (LTS))在list文件里增加如下内容:

  1. deb https://apt.dockerproject.org/repo ubuntu-xenial main

重新执行更新操作,并删除老的repo

  1. # apt-get purge lxc-docker //没有安装的话,跳过

从14.04版本以上开始docker推荐安装linux-image-extra

  1. # apt-get install linux-image-extra-$(uname -r)

有些内容可能会系统里已经有,所以无关紧要。

最关键的一步:

安装docker

  1. # apt-get update
  2. # apt-get install docker-engine
  3. # service docker start
  4. # docker run hello-world

如果打印一堆关于hello-world的信息说明安装完成。

(二)解决下载镜像被阻的问题

我要用Docker下载网上的镜像进行深度学习,结果下拉的时候出现如下错误:

  1. root@ygh:~/deep_ocr_workspace# docker pull jinpengli/deep_ocr_cpu_docker:latest
  2. 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:

输入下列命令:

  1. # dig auth.docker.io

打印如下:

  1. root@ygh:~/deep_ocr_workspace# dig auth.docker.io
  2.  
  3. ; <<>> DiG 9.10.-P4-Ubuntu <<>> auth.docker.io
  4. ;; global options: +cmd
  5. ;; Got answer:
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
  7. ;; flags: qr rd ra; QUERY: , ANSWER: , AUTHORITY: , ADDITIONAL:
  8.  
  9. ;; OPT PSEUDOSECTION:
  10. ; EDNS: version: , flags:; udp:
  11. ;; QUESTION SECTION:
  12. ;auth.docker.io. IN A
  13.  
  14. ;; ANSWER SECTION:
  15. auth.docker.io. IN A 52.5.246.212
  16. auth.docker.io. IN A 50.17.62.194
  17. auth.docker.io. IN A 34.193.147.40
  18.  
  19. ;; Query time: msec
  20. ;; SERVER: 127.0.1.1#(127.0.1.1)
  21. ;; WHEN: Tue Mar :: CST
  22. ;; MSG SIZE rcvd:

我们在这里选用34.193.147.40这个ip,将它替换掉即可。

2、修改IP:

/etc/hosts强制 docker.io 相关的域名解析到这个可用 IP :

步骤如下:

  1. # gedit /etc/hosts

然后在最后一行加上下面这一行内容即可:

  1. 34.193.147.40 registry-.docker.io auth.docker.io

到这里就解决问题了。之后再使用

  1. # docker pull jinpengli/deep_ocr_cpu_docker:latest

就可以成功pull文件了。

(三)解决将Docker内文件转移到主机的方法

1、首先要挂在Docker容器:

  1. # sudo docker run -ti --volume=${HOME}/deep_ocr_workspace:/workspace jinpengli/deep_ocr_cpu_docker:latest /bin/bash

然后另开一个终端:

查看容器名称或者id:

  1. # docker ps

然后拷贝即可:

  1. # docker cp <containerId>:/file/path/within/container /host/path/target

比如:

  1. root@ygh:~/deep_ocr_workspace# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 45e0a73507ce jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" seconds ago Up seconds condescending_brahmagupta
  4.  
  5. # docker cp 45e0a73507ce:/workspace/caffe_dataset_lower_eng/images /home/ygh/program/

这样就完成拷贝至主机的工作。

将主机文件拷贝到容器在工作中也有涉及:

通过如上方法获得CONTAINER ID,然后执行下面的命令:

  1. # sudo docker cp host_path containerID:container_pat

比如:

  1. # docker cp id_test1.png a7cd897f38bc:/workspace/data

完成此工作!

(四)启动现有的容器

当我们遇到需要启动上次建立的容器的时候,我找到了解决办法,如下:

1、查看现有的容器列表:

  1. # docker ps -a
  1. root@ygh:/home/ygh/caffe# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 7435041f1a0f jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" hours ago Up hours eloquent_cray
  4. 25f572cc7a93 jinpengli/deep_ocr_cpu_docker:latest "/bin/bash" days ago Exited () seconds ago flamboyant_goldwasser
  5. 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)

步骤如下:

  1. # docker start -i 25f572cc7a93

就可以直接启动,也可以先start 再 attach即可。

by  still、

Caffe学习系列(三)Docker安装及一些问题的记录的更多相关文章

  1. 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 ...

  2. Caffe学习系列(21):caffe图形化操作工具digits的安装与运行

    经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...

  3. Caffe 学习系列

    学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...

  4. Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

    caffe团队用imagenet图片进行训练,迭代30多万次,训练出来一个model.这个model将图片分为1000类,应该是目前为止最好的图片分类model了. 假设我现在有一些自己的图片想进行分 ...

  5. Caffe学习系列(22):caffe图形化操作工具digits运行实例

    上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的” Images" ...

  6. Caffe学习系列——工具篇:神经网络模型结构可视化

    Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py ...

  7. Caffe学习系列(12):训练和测试自己的图片

    学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...

  8. 转 Caffe学习系列(12):训练和测试自己的图片

    学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...

  9. RabbitMQ学习系列三-C#代码接收处理消息

    RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理 http://www.80iter.com/blog/1438251320680361 http://www. ...

  10. Caffe学习系列(12):训练和测试自己的图片--linux平台

    Caffe学习系列(12):训练和测试自己的图片   学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...

随机推荐

  1. 微信java开发之实现微信主动推送消息

    1.拉取access_token2.拉取用户信息3.主动推送消息4.接口貌似要申请权限5.依赖httpclient4.2.3 和jackson 2.2.1 public class WeixinAPI ...

  2. JavaScript单线程(setTimeout,setInterval)

    今天看到这篇文章,学到了不少东西 特此发出来 和大家分享 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执 ...

  3. apk文件反编译

    apk文件的反编译,需要的工具apktool(反编译资源文件)和dex2jar-0.0.7.9-SNAPSHOT(反编译源码) 1.  下载相关软件 1)Apktool,下载地址:http://cod ...

  4. linux 登陆key生成

    1.登录A机器 2.ssh-keygen -t rsa,将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub Generating public/priv ...

  5. 分享牛人就是的volatilekeyword

    volatile作用 一个定义为volatile的变量是说这变量可能会被意想不到地改变.这样,编译器就不会去如果这个变量的值了. 精确地说就是.优化器在用到这个变量时必须每次都小心地又一次读取这个变量 ...

  6. maven的一些基础命令

    1.显示当前构建的实际pom,包括活动的Profile mvn help:effective-pom 2.打印出项目的世界settings,包含从全局的settings和用户级别settings继承的 ...

  7. [译]GLUT教程 - 渲染到子窗体

    Lighthouse3d.com >> GLUT Tutorial >> Subwindows >> Rendering to Subwindows 先回顾一下之前 ...

  8. Quartz.Net - Lesson2: 任务和触发器

    Lesson 2: 任务和触发器 本系列文章是官方3.x文档的翻译,原文地址:https://www.quartz-scheduler.net/documentation/quartz-3.x/tut ...

  9. 从分类,排序,top-k多个方面对推荐算法稳定性的评价

    介绍 论文名: "classification, ranking, and top-k stability of recommendation algorithms". 本文讲述比 ...

  10. Ubuntu配置apache2.4配置虚拟主机遇到的问题

    update: 偶然看到了 apache的更新说明,直接贴个地址过来吧. http://httpd.apache.org/docs/2.4/upgrading.html 最近想把web开发目录从/va ...