win10下Docker初识

说明

  1. 使用平台win10 1709版本,提示如果你的也是win10系统,而且版本较低可能也会提示xxxpro什么的,意思就是你的电脑版本不对。
  2. docker使用Linux containers 可以使用docker version查看信息,单击小鲸鱼switch to xxxx 进行切换
  3. 此篇文章由学习后所写第一个docker化的java应用 感谢慕课网的这位老师

什么是Docker

定义

根据百度百科定义: Docker(应用容器引擎) 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

组成要素
  1. dockerClient客户端
  2. Docker Daemon守护进程
  3. Docker Image镜像
  4. DockerContainer容器
局限

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点: Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用 LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的 隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库 网络管理相对简单,主要是基于namespace隔离 cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费) Docker对disk的管理比较有限 container随着用户进程的停止而销毁,container中的log等用户数据不便收集

同类产品

CoreOs发布的一个名为Rocket。

为什么会出现

解决了什么问题

有了Docker,开发人员不再需要为处理各种开发、 测试、生产环境的差异而花费大量精力,他们可以将一个干净的开发环境直接迁移到生产环境,而不必担心各种依赖和配置问题。这有效的解决了开发者经常面临的“依赖陷阱”。(来源http://blog.csdn.net/zhushuai1221/article/details/52486684) 总的来说:Docker解决了运行环境和配置问题,方便发布,也就方便做持续集成。更轻量的虚拟化,节省了虚拟机的性能损耗

未出现前怎么解决

额,说说在我不知道有这项技术之前部署自己的博客系统吧。各种环境配置,jdk,mysql,tomcat,nginx...需要一个个下载安装,配置,检查是否有问题,真的是相当麻烦。

怎么做?Demo

设置镜像源

Docker 中国官方镜像加速。通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像。设置后速度快的不要不要的。 官方网站镜像说明:https://www.docker-cn.com/registry-mirror 使用该镜像源只需要设置 registry-mirrorshttps://registry.docker-cn.com即可

image

第一个镜像hello-world
  1. dos命令下输入命令docker images 即可查看目前所有镜像
  2. 获取第一个镜像hello-world 命令docker pull hello-world pull是拉的意思,和git中的pull拉仓库的代码很相似吧。同样的也对应一个命令push(推)
  3. 运行镜像 docker run hello-world 运行结果如下

image

其实运行一个镜像命令不仅仅如此简单,更详细的操作可以使用docker run --help查看所有命令

第二个镜像运行nginx

那么镜像我们去哪里下载呢?docker官方有一个仓库,其实理解起来和maven的中央仓库一样,我们需要什么去中央仓库拿就好了。 官方网址

  1. 下载nginx镜像,在页面详情页获取Docker Pull Command(命令) 下载成功

image

  1. 运行nginx 使用命令docker run -d nginx -d的意思是在后台运行。启动后看看状态,使用命令docker ps

  2. 试试在浏览器输入127.0.0.1 这个时候nginx还是访问不了的,请先操作下面

  3. 如果我们想知道容器内部怎么办?可以使用命令docker exec docker exec --help 看一下帮助信息

  4. 使用命令docker exec -it be 注意:这个be是我运行nginx镜像后获取的一个id,而be只是前两位,注意第2点的docker ps 镜像nginx的CONTAINER ID(容器ID) 因为只启动了一个镜像,所以我输入be就能识别我要执行的镜像

image

  1. 进入后你会发现和Linux系统好像呀!其实就是一个虚拟Linux系统好嘛! 熟悉的Linux命令

image

7.退出容器命令exit

Docker网络

更详细的学习前往(https://www.cnblogs.com/allcloud/p/7150564.html)

特别说明:图片引用来自慕课网

image image

还记得在步骤 第二个镜像运行nginx的第三点吗?试试在浏览器输入127.0.0.1.....但是无法访问对吧。 通过本地8080端口映射docker容器中的80端口 此时就可以访问docker中的nginx。 命令

docker run -d -p 8080:80 nginx

再次在浏览器访问127.0.0.1:8080 ,成功访问nginx

image

制作自己的镜像并部署

创建一个文件夹,改文件夹下包含Dockerfile文件和Jpress.war包

image

  1. 制作自己的Dockerfile文件 在Dockerfile文件写入一下信息。注意这个文件没有后缀,可以建立一个txt文件在重复名去掉txt后缀即可
from tomcat

MAINTAINER peng xxx@163.com

COPY jpress.war /usr/local/tomcat/webapps

意思是需要tomcat(会默认下载jdk,免去下载jdk的步骤) 镜像所有者信息 发布到tomcat/webapps目录下 如果你是按照步骤来的,那么tomcat镜像没下载吧。前面的步骤还记得吗?拉取tomcat镜像,命令docker pull tomcat

  1. 我们需要部署自己的web应用到服务器这里我们使用Jpress博客系统作为我们测试的应用。 在GitHub下载war包 Github-JPress-War包下载

GitHub下载较慢,请移步

  1. 创建镜像使用命令 docker build .
    注意 . 表示当前目录,给镜像起一个名字(准确说是加一个标签) docker build -t jpress:latest .

使用命令docker images 查看镜像jpress成功。注意我的jpress错了,标签应该为latest,一开始打错了..

image

  1. 运行tomcat 此时运行tomcat镜像jpress就可以访问了!命令
docker run -d -p 8888:8080 jpress

image

  1. 拉取MySQL并设置数据库密码,建立jpress数据库 由于jpress博客框架的运行需要MySQL数据库的支持,同样的去镜像库获取pull命令,下拉到自己的仓库即可。 MySQL相关命令的操作在MySQL 都有说明。使用命令
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a -e MYSQL_DATABASE=jpress mysql

注意!如果你的电脑安装了MySQL并且启动了MySQL服务,此时会报错,解决方案是换个端口即可。

  1. 连接数据库 如果数据库主机为localhost无法连接数据库,则改为IP地址。查看本机IP地址方法cmd命令下inconfig ,注意此时的端口号应该改为3307.安装成功!

image

  1. 重启web容器 查看容器运行情况 docker ps 执行命令docker restart CONTAINER ID(容器ID) 即可访问jpress啦

image

Over!牛逼的技术,在学习路上...

前段时间在微博看到他人分享关于Docker的原理分析,移步学习 Docker 核心技术与实现原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值