文章目录
Docker
Docker简介
- 基于go语言编写
- 开源项目
- Docker提供了一种打包、输送、运行任意应用的容器解决方案
- 当前适用于Linux平台
Docker的安装
环境依赖
- Docker基于Linux,在Win/Mac需要依赖Linux VM。
安装Docker
- Docker官方指南(英文)
- Docker下载页面
- Linux:使用命令行下载即可
- Mac/Win:使用带有可视化界面的安装包即可
安装VirtualBox
- 下载VirtualBox
- 新建docker-machine需要VirtualBox驱动。
- VirtualBox虚拟化硬件,Docker虚拟化操作系统。
Docker Machine
Docker Machine的简介
- 可以通过本地的Docker Machine控制远程Docker主机的配置
Docker Machine与Docker Engine的异同
-
Docker Engine的基本结构
-
Docker Machine的基本结构:通过客户端(Client)管理主机(Server)
Docker Machine的功能
- 在Mac/Win运行Docker的唯一方式
- 支持不同版本的Linux上管理多个Docker主机
- 提供集中创建和管理Docker主机的功能
- 与Docker Swarm集成,创建Docker集群
Docker Machine的基本使用
Docker Machine的常用命令
- Docker Machine命令行指南:Docker Machine command-line reference
-
version:查看版本 -
help:查看帮助 -
create/rm:创建/删除一个Docker Machine -
start/stop/restart/kill:启动/停止Docker Machine -
active/config/env/inspect/ip/ls/status/url:获取相应信息 -
ssh:远程登录Docker machine -
scp:本机与machine或machine之间传输文件
Docker Machine的基本演示
- 打开命令行
- 查看可用的Machines:
docker-machine ls
- 删除、创建一个Machine
-
docker-machine create --driver virtualbox cloudcomb:在指定的virtualbox(虚拟硬件)上创建cloudcomb(Machine) - 再次
ls查看,cloudcomb创建成功
-
- 获取指定Machine的环境变量
-
docker-machine env cloudcomb:四个环境变量(通信是否基于TLS,远程Docker的Host与Port,认证证书与路径,docker-machine的名称)
-
- 将Shell连接到指定的Machine上
-
eval $(docker-machine env cloudcomb):把cloudcomb的环境变量配置到shell,即上图的最后一行。
-
- 运行一个Docker容器
-
docker run hub.c.163.com/library/busybox:latest echo hello world:运行指定Docker容器(网易蜂巢镜像中心的busybox容器),验证docker-machine是否正常工作,并echo打印字符串。
-
- 删除指定docker machine
-
docker-machine rm cloudcomb:删除指定Machine。 -
ls查看,是否删除成功
-
Docker+Nignx:快速部署静态网站
-
docker pull:拉取镜像,类似下载。-
docker pull hub.c.163.com/library/nginx:latest:拉取指定地址的镜像
-
-
docker images:查看现有镜像 -
docker run:- 运行前需要配置Machine变量到Shell:
eval $(docker-machine env cloudcomb) -
docker run -p 8080:80 --name nginx_web -it hub.c.163.com/library/nginx /bin/bash:启动docker-
-it:进入指定docker -
-p:容器对于宿主机的映射,宿主机的Port映射为容器的Port(本机的8080端口 映射到 Docker的80端口,Nginx默认端口为80)
-
- 运行前需要配置Machine变量到Shell:
-
在容器内运行Nginx
-
查看进程:
ps aux -
尝试访问
http://192.168.99.102:8080/-
192.168.99.102:cloudcomb(docker-machine)的Host(docker-machine env查看) -
8080:宿主机的Port(docker run指定)
-
-
登出cloundcomb docker环境(但不停止Docker):先
ctrl+p,后ctrl+q -
在指定容器中打开交互模式的终端:
docker exec -it nginx_web /bin/bash -
查看当前运行的容器信息:
docker ps -a -
列出指定容器内正在运行的进程:
docker top nginx_web -
列出容器内端口地图:
docker port nginx_web -
停止指定容器:
docker stop 8cc,8cc是前缀,防止误删。http://192.168.99.102:8080/将不可访问。 -
删除指定容器:
docker rm 8cc -
再次查看:
docker ps -a,确保已删除
Dockerfile快速部署
Dockerfile文件
-
无后缀名:
- 制作纯文本(注意不要使用rtf格式)
- 制作纯文本(注意不要使用rtf格式)
-
内容:
FROM hub.c.163.com/library/nginx #以此镜像为基础
RUN echo “Hello Nginx on Docker” > /usr/share/nginx/html/index.html #把文本写入html网页
EXPOSE 80 #暴露80端口
#CMD ’nginx’ #注释
- 位置:
/Users/jayli/Desktop/Nginx/Dockerfile
Docker Build操作
-
docker build -t couldcomb/nginx:1.0 /Users/jayli/Desktop/Nginx:创建couldcomb的nginx版本为1.0,自动执行Nginx文件夹下的Dockerfile。 -
查看镜像
-
运行Docker
docker run -p 8081:80 --name test_nginx -it couldcomb/nginx:1.0 /bin/bash- 在Docker中启动Nginx
- 实测失败!!!