docker

#Docker 我们以前是用系统+软件运行的, Docker把系统再拆成小的模块(集装箱)和环境运行

##基本概念 ####镜像(Image) 除了系统文件以外,还有程序、库、资源、配置。 通俗点:(系统文件+程序)独立化 ####容器(Container) 容器和镜像的关系好比类和实例一样。 容器就是进程, ####仓库(Repository) 仓库分发数据“<仓库名>:<标签> 例:ubuntu:14.04 路径命名: jwilder/nginx-proxy 前者用户名,后者是软件名,但不一定绝对。 Docker还有加速服务以及API

###查看系统内核

uname -a

##mac安装 docker docker官网下载

安装后在进入设置

20170302148842307479972.png

增加阿里云的下载地址

2017030214884230975517.png

通过下面的代码查看系统版本

$ docker --version
Docker version 1.12.3, build 6b644ec
$ docker-compose --version
docker-compose version 1.8.1, build 878cff1
$ docker-machine --version
docker-machine version 0.8.2, build e18a919

安装docker的 Nginx服务器:

docker run -d -p 80:80 --name webserver nginx

20170302148842337156105.png

有网站了。

$ docker stop webserver
$ docker rm webserver

停止和删除服务器

查看镜像

docker images

##使用image

docker run --name webserver -d -p 80:80 nginx

运行nginx 命名为webserver 并映射端口80

现可以打开 http://localhost

看见打开的Nginx 欢迎页面。

##修改内容 如果不太喜欢可以用指令修改程序里面的文字

$ docker exec -it webserver bash
root@3729b97e8226:/# echo '<h1>Hello, Docker!</h1>' > /usr/share
/nginx/html/index.html
root@3729b97e8226:/# exit
exit

##查看文件的变化

docker diff webserver

我们修改了image,现在保存形成的镜像文件

docker commit [选项] <容器id或容器名> [<仓库名>[:<标签>]]

docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \
nginx:v2
sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa
1795214

author 作者 message 修改信息 nginx仓库名 v2 标签

查看nginx

docker images nginx

查看历史记录

docker history nginx:v2

运行我们新建的镜像文件

docker run --name web2 -d -p 81:80 nginx:v2

81是映射到81端口 我们成功的定制了一个自己的镜像文件

##安装和运行tensorflow

docker pull tensorflow/tensorflow

tensorflow名本不是这个,我用软件 ##docker tags## 指令修改过名字

运行:

docker run --name tensorflowvan -it -p 8888:8888 -v ~/Users/VANXV/tensorflow:/notebooks/data tensorflow:0.11.0-gpu

访问http:/localhost:8888

docker run 运行镜像,

--name 为容器创建别名,

-it 保留命令行运行,

-p 8888:8888 将本地的8888端口 http://localhost:8888/ 映射,

-v ~/tensorflow:/notebooks/data 将本地的~/tensorflow文件夹挂载到新建容器的/notebooks/data下(这样创建的文件可以保存到本地~/tensorflow) tensorflow/tensorflow 为指定的镜像, 默认标签为latest(即tensorflow/tensorflow:latest) 20170302148843067539639.png

增加python2的一个指令:

from __future__ import print_function
import tensorflow as tf
with tf.Session():
    input1 = tf.constant([1.0, 1.0, 1.0, 1.0])
    input2 = tf.constant([2.0, 2.0, 2.0, 2.0])
    output = tf.add(input1, input2)
    result = output.eval()
    print("result: ", result)

20170302148843101024590.png

查看运行的容器

docker ps

关闭tensorflow容器 和# 开启TensorFlow容器

docker stop tensortflowvan

docker start tensortflowvan