win10下Docker初识

本文介绍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.youkuaiyun.com/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 核心技术与实现原理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值