markdown Ubuntu Docker开发环境配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Ubuntu Docker开发环境配置相关的知识,希望对你有一定的参考价值。

# Ubuntu Docker开发环境配置

根据安装docker一文,可以得出,Docker Engine相当于一个虚拟机实例。而开发环境中(比如Pycharm),需要在Docker machine管理,因此,真正的做法是,在本机安装Docker Machine,并创建一个虚拟机,在该虚拟机中安装Containers,并且将开发环境连接上该虚拟机。

下面的命令第一次`docker images`是在本机上,因为此前的安装已经把本机作为一个Docker Engine,并且傻乎乎的装上了tensorflow。实际上这个tensorflow是不能用来开发的。。。不过可以用来演示一下之类

而执行`eval`之后,进入到Docker machine创建的`default`虚拟机中,在那里面第二次`docker images`,那个default虚拟机就只安装了一个`hello-world`的container


```
shawn@shawn-Aspire-E5-472G:~$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
tensorflow/tensorflow   latest              02f42dc11beb        5 weeks ago         1.17GB
hello-world             latest              1815c82652c0        7 weeks ago         1.84kB
shawn@shawn-Aspire-E5-472G:~$ eval $(docker-machine env default)
shawn@shawn-Aspire-E5-472G:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              1815c82652c0        7 weeks ago         1.84kB
shawn@shawn-Aspire-E5-472G:~$

```

## 下面记录Pycharm+Docker+Tensorflow的开发环境配置

### 利用Docker Machine创建虚拟机

创建一个叫做`Tensorflow`的虚拟机

__docker-machine create -d virtualbox Tensorflow__

```
shawn@shawn-Aspire-E5-472G:~$ docker-machine create -d virtualbox Tensorflow
Running pre-create checks...
(Tensorflow) You are using version 4.3.36_Ubuntur105129 of VirtualBox. If you encounter issues, you might want to upgrade to version 5 at https://www.virtualbox.org
Creating machine...
(Tensorflow) Copying /home/shawn/.docker/machine/cache/boot2docker.iso to /home/shawn/.docker/machine/machines/Tensorflow/boot2docker.iso...
(Tensorflow) Creating VirtualBox VM...
(Tensorflow) Creating SSH key...
(Tensorflow) Starting the VM...
(Tensorflow) Check network to re-create if needed...
(Tensorflow) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env Tensorflow
shawn@shawn-Aspire-E5-472G:~$
```

这次不用下载`boot2docker.iso`,就快了

list一下,可见`tensorflow`虚机已经创建出来了

```
shawn@shawn-Aspire-E5-472G:~$ docker-machine ls
NAME         ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default      -        virtualbox   Running   tcp://192.168.99.100:2376           v17.06.0-ce   
Tensorflow   -        virtualbox   Running   tcp://192.168.99.101:2376           v17.06.0-ce   
shawn@shawn-Aspire-E5-472G:~$
```

### 进入虚机环境

```
eval $(docker-machine env Tensorflow)
```

`eval`是个神奇的命令,貌似是类似于变量替换之类的,有空再研究研究。

`docker images`一下,发现没有已安装的images,这就对了。

或者用`docker-machine ssh`

```
shawn@shawn-Aspire-E5-472G:~$ docker-machine ssh Tensorflow
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.06.0-ce, build HEAD : 0672754 - Thu Jun 29 00:06:31 UTC 2017
Docker version 17.06.0-ce, build 02c1d87
docker@Tensorflow:~$

```

### 配置加速器

国内的网络。。。

在`Tensorflow`虚拟环境里,配置加速器。

到[DaoCloud](https://www.daocloud.io/)注册一个账号,点进加速器页面,会得到一句命令,我的是这样的

```
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ae307aa1.m.daocloud.io
```

在虚拟环境中运行一次,然后提示需要重启docker service

这时候退出虚拟环境,在外面执行`docker-machine restart Tensorflow`,重新进入,就可以准备安装Tensorflow了

### 安装Tensorflow

一步到位

```
docker run -it -p 8888:8888 tensorflow/tensorflow
```

由于有了Daocloud的CDN加速,下载安装过程会比较快。

## 配置Pycharm

### 配置环境

Docker Machine跑起来之后,到Pycharm中,`Settings->Build, Excution,Deployment->Docker->Tools`应该能看到docker-machine,然后在Docker中添加一个Docker,选择Docker Machine,下拉菜单中可以看到正在运行的Docker Machine

### 配置工程

`Settings->Project->Project Interpreter`,小齿轮添加一个Remote Interpreter(被我发现了原来Pycharm Community版本不能店家Remote Interpreter),选择Docker,后面就很容易了

非常漫长长长长长长长长长长长长长长长长长长长长长的等待之后,pycharm终于update好了环境,可以import了

## 配置共享文件

一共虚拟了三层

首先,利用VirtualBox安装的Docker Machine,因此本机和Docker之间需要共享文件,在Virtualbox里面设置共享文件即可,我把`/home/shawn`目录共享到virtualbox里面一样的目录

然后,每个Container相对于Docker machine可以说又是一层虚拟机,因此Container和Docker machine之间需要共享,这就是`docker run`里面的-v参数的作用了。其实在pycharm里面不用设置任何的共享目录,在`Run configuration`里面默认已经加好了参数。

[这篇文章](https://blog.jetbrains.com/pycharm/2015/12/using-docker-in-pycharm/)有提到pycharm在linux下有个bug,就是要自己手动设置虚拟机和主机的挂载,想必就是virtualbox那层吧

以上是关于markdown Ubuntu Docker开发环境配置的主要内容,如果未能解决你的问题,请参考以下文章

markdown Ubuntu 14.04 LTS安装卸载Docker和Tensorflow

markdown Ubuntu搭建metabase开发环境

markdown Ubuntu LAMP开发环境设置

markdown Ubuntu LAMP开发环境设置

markdown 环

markdown 岩钉钢环元素