1.1:什么是docker?

可移植的容器,开源的应用容器引擎。

1.2:Nginx作为Node.js前端Web Server 的作用

①:提升静态文件处理效率 是纯node.js的两倍以上
	②:利用并配置反向代理规则,减轻压力
	③:可扩展性
	④:稳定性和转发性能
	⑤:安全性增强
	⑥:方便运维

1.3:安装Docker和下载Images镜像

http://docs.docker.com/
	使用阿里云镜像加速器可以提升下载速度
	https://help.aliyun.com/knowledge_detail/60750.html

1.4:docker常用指令

帮助: 
		docker -h
	获取镜像:
		sudo docker pull name:[tag]
		ex: duco docker pull centos:7
	启动Container盒子
		sudo docker run [OPTIONS]  IMAGE [COMMAND] [ARG...]
		ex: 	sudo docker run -t -i centos /bin/bash
	查看镜像列表,列出本地所有images
		sudo docker images [OPTIONS] [NAME]	
		ex: duso docker images centos 
	查看容器列表,可看到所有创建的Container
		sudo docker ps [options]
		ex: sudo docker ps -a
	删除镜像
		sudo docker rmi IMAGE [IMAGE...]
		ex: sudo docker rmi centos: latest
	删除一个或多个容器
		sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]
		ex: sudo docker rm 026
	删除运行中的容器(+ -f)
		sudo docker rm -f  [OPTIONS] CONTAINER [CONTAINER...]
		ex: sudo docker rm -f 026
	移除所有未运行的容器
		sudo docker rm $( sudo docker ps -aq)
	停止运行中的容器
		sudo docker kill  [OPTIONS] container [CONTAINER...]
		ex: sudo docker kill 026e
	重启一个正在运行的容器
		sudo docker restart [OPTIONS] CONTAINER [OCNTAINER...]
		ex: sudo docker restart 026e
	启动容器
		sudo docker start [OPTIONS] CONTAINER [CONTAINER...]
		ex: sudo docker start 026e
	容器重命名
		docker rename 容器ID/容器名  新名称
其它命令:
镜像
docker images 
		-a:列出本地所有镜像
		-q:只显示镜像ID
		--digests:显示镜像的摘要信息
		--no-trunc:显示完整的镜像信息
		
		-p  主机端口:docker容器端口
		-P  随机分配端口
		-i   交互
		-t   终端
	搜索镜像
		docker search -s 30 XXX
		-s: 过滤 点赞数 小于 30 的 XXX 
	拉取最新镜像
		docker pull XXX 等价于 docker pull XXX:latest  
	删除所有镜像
		docker rmi -f $(docker images -qa)
	下载镜像并运行
		docker run -it -p 8080:8080 tomcat
容器
根据docker镜像创建新的容器并进入
		docker run -it [--name XXX]  镜像ID
	打开已有容器
		docker attch name
	不打开容器,但执行命令
		docker exec ID 指令
		ex: docker exec ID ls -l
	查看容器运行历史
		上一次:
			docker ps -l
		上三次:
			docker ps -n 3
		所有历史:
			docker ps -a
		只显示容器编号: -q 
			ex: docker ps -l -q 
	退出容器
		停止并退出:
			exit
		不停止退出:
			Ctrl+P+Q
	停止容器
		一般停止:
			docker stop name/ID
		强制停止
			docker kill name/ID
容器重点
运行机制
	 		docker后台守护进程,必须对应的有一个前台进程(-it),否则后台进程将自动结束,除非使用一直挂起的命令运行(或者后台在跑功能)
	  		docker run -d 
	 日志:
	 		docker logs 容器ID
	 			logs -t  添加时间
	 			logs -f 持续输出日志
	 			logs --tail 3 从最后三行开始打印
	查看容器内部的细节
			docker inspect id
	复制容器内文件
			docker cp容器ID/容器名:(冒号) /file  目标路径
			ex: docker cp abcd:/testfile /root

1.5:启动Container容器

启动(创建)一个每秒输出一次 ‘hello world’ 的容器
sudo docker run -i -t 7e6 /bin/sh -c "while true; do echo 'hello world' ; sleep 1;done;"
-i: 表示同步 container 的stdin
	-t: 表示分配一个伪终端

1.6:文件卷标加载

以下命令是把本机的 /etc 目录挂载到 Container 的/opt/etc 下,并且打印Container 的/opt/etc 目录
docker run --rm=true -i -t --name=ls-volume -v /etc/:/opt/etc/ centos ls /opt/etc
/etc/:/opt/etc/  
		冒号前,表示本机目录;冒号后,表示Container挂载目录
	--rm=true
		表示这个Container运行结束后自动删除
挂载只读卷标
docker run --rm=true -i -t --name=ls-volume -v /etc/:/opt/etc/:ro #read only
Container 文件共享
创建一个名为 etc_share 的容器 ,并在etc目录下创建文件夹 my_share, 把 etc 目录共享出去
sudo docker run -i -t -p 1337:1337 --name=etc_share -v /etc/ centos mkdir /etc/my_share && /bin/sh
-p: 表示端口映射 将Container的1337端口映射到主机的1337端口

	启动一个名为 get_etc 的Container来挂载etc_share共享的目录,需要用到 volumes-from 参数
docker run --rm=true  -it --volumes-from share_etc --name=get_etc centos ls /etc
打印etc目录,可以看到刚才创建的 my_share文件夹

1.7:将多个Container盒子连接起来

①:先下载一个redis数据库的镜像
docker pull redis:latest
②:启动redis镜像的Container,开启redis-server持久化服务
docker run --name redis-server -d redis redis-server--appendonly yes

目标:实用
项目: