docker
#Docker 我们以前是用系统+软件运行的, Docker把系统再拆成小的模块(集装箱)和环境运行
##基本概念 ####镜像(Image) 除了系统文件以外,还有程序、库、资源、配置。 通俗点:(系统文件+程序)独立化 ####容器(Container) 容器和镜像的关系好比类和实例一样。 容器就是进程, ####仓库(Repository) 仓库分发数据“<仓库名>:<标签> 例:ubuntu:14.04 路径命名: jwilder/nginx-proxy 前者用户名,后者是软件名,但不一定绝对。 Docker还有加速服务以及API
###查看系统内核
uname -a
##mac安装 docker docker官网下载
安装后在进入设置
增加阿里云的下载地址
通过下面的代码查看系统版本
$ 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
有网站了。
$ 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)
增加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)
查看运行的容器
docker ps
关闭tensorflow容器 和# 开启TensorFlow容器
docker stop tensortflowvan
docker start tensortflowvan