Docker
虚拟机:启动时间分钟级别
完整镜像4个多G
时间长
带环境安装
看上去和vm一样,虚拟机是一个普通文件
,不需要就删了,不会影响我们原本的OS
缺点:
docker是一种容器虚拟技术
图标解读
前置知识
开发与运维的那些事
开发开发出一个应用,打包war包,发给运维,运维做部署。
docker提供了标准的解决方案
软件可以带环境安装,安装是将原始环境一模一样复刻过来
eg:
养鱼:如果我们只是买条鱼回来可能会死,因为环境不一样嘛,淡水养殖,你非得用盐水,那不就死了,最好你连着海搬过来,这样肯定没问题
搬家:原本你在一个地方,各种家具摆放的都挺好,然后你要搬家,你觉得怎么摆放都摆不好,这时候最好就是带楼搬
相应技术: 镜像技术
docker打破程序即应用,通过镜像技术,做到一次封装, 处处运行
跨平台,跨服务器
解读docker图标
devops:开发/运维,解决了运维时环境与开发不一致的问题
优势:
docker与传统虚拟化方式的不同之处:
docker官方地址
centos 7 64bit(都是64位机),内核在3.10以上
centos6.5以上,版本在2.6.32-431以上
需要正确的理解仓储/镜像/容器这几个概念:
Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image 文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。
centos 6.8 安装
centos 7 安装
官方地址
Docker有 社区版和 专业版
卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
安装需要的软件包
yum install -y yum-utils device-mapper-persistant-data lvm2
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看状态:systemctl status docker
绿了就对了
运行helloworld镜像:docker run hello-world
肯定第一次是没有的,就要先pull镜像,从register下载,然后在更具镜像生成容器,运行容器
这里使用阿里云的镜像加速
配置加速器:
前提:centos 7
步骤:
创建一个docker文件
mkdir -p /etc/docker
这里的-p是创建多级目录的意思
docker是怎么工作的:c/s结构
为什么docker快于vm
docker version:版本等内容
docker info:更多信息
docker help:帮助文档
列出本地镜像:docker images
options | 说明 |
---|---|
-a | |
-q | |
–digests | |
–no |
docker search
options | 说明 |
---|---|
–notrunc | 显示完整的镜像描述 |
-s | 列出收藏数 |
–digests | |
–no |
安装依赖:
web项目为Jpress
安装nginx依赖:docker pull nginx
后台启动运行nginx
docker run -d nginx
将8080端口映射
docker run -d -p 8080:80 nginx
安装tomacat依赖:docker pull tomcat
在jpress.war所在目录建立Dockefile文件:cat Dockerfile
说明是以tomcat为基础模板
# 说明是以tomcat为基础模板
from tomcat
# 容器的版权信息
MAINTAINER jack [email protected]
# 拷贝war包发布到tomcat的www web程序发布目录
COPY jpress.war /usr/local/tomcat/webapps
3.创建一个叫做jpress:latest的镜像
[root@node1 ~]# docker build -t jpress:latest .
启动容器将容器的8080端口映射到宿主机的8888
[root@node1 ~]# docker run -d -p 8888:8080 jpress
04252a52ecffab83d151a7d37aa24c0acd0b7bc75607b6cc8da2c017ee84ac4b
访问tomcat,可以看到能够正常访问jpress,http://192.168.3.177:8888/jpress/
4.安装mysql镜像
因为jpress后台依赖mysql数据库,需要安装mysql
运行mysql容器,3306映射到宿主3306,创建密码,数据库为jpress
[root@node1 ~]# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=jpress mysql
7b2ea4ced739ef2e296513f67fcef5fea104a70a1b6badef56cd4fde99df6bc7
现在jpress依赖的mysql和tomcat安装启动完毕,需要继续安装jpress程序,注意数据库主机需要填写宿主机的ip,因为Localhost是找容器的localhost,jpress容器中没有mysql只有Jpress程序
5.重新启动Jpress,再次访问网站就ok了
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b2ea4ced739 mysql “docker-entrypoint.s¡” 8 minutes ago Up 8 minutes 0.0.0.0:3306->3306/tcp vigilant_perlman
04252a52ecff jpress “catalina.sh run” 23 minutes ago Up 23 minutes 0.0.0.0:8888->8080/tcp lucid_tesla
16f19cac5349 nginx “nginx -g 'daemon of¡” About an hour ago Up About an hour 0.0.0.0:32768->80/tcp competent_davinci
[root@node1 ~]# docker restart 04252a52ecff
至此,使用docker部署我们自己的一个Java web程序就告一段落