Docker

Docker是一个开元容器引擎,可以理解为是个简易版的linux系统,Docker由client客户端+容器+镜像image仓库组成.

我们可以在一个容器可以启动一个应用程序,而且是简单的一行命令就可以直接安装启动,比如说mysql

概念

我们可以从官网拉取镜像,也可以从私服拉取镜像,然后在本地启动镜像,启动之后就生成了一个容器,容器可以有多个,容器内部一般不存储数据,Docker容器是不稳定的,可以随意重启,比如说Mysql的数据,而且多个Docker容器之间数据应该可以相互通讯, 可以-v挂载宿主机的文件夹, 这样doker直接启动关闭无需关系数据的丢失,多个容器也可以共享宿主机的文件

数据挂载

Docker的-v [volume]启动容器的时候挂载主机目录,可以冒号别名,命令创建一个数据卷,指向宿主机的文件位置,启动的时候可以指定共享别的容器的挂载文件,1、指定目录挂载,2、指定容器的挂载共享volume-from,删除容器也不会删除宿主数据,当然也可以强制删除数据

镜像制造

commit方式创建镜像

容器是在镜像上面增加了一个读写层,当commit是此层变成了只读层,变成了镜像

docker ps 查看所有镜像,都是仓库已有的,那么如何自己创建一个镜像呢,docker run ,[yum search jdk],yum install nginx -y,rpm 添加源, 将安装了nginx的docker容器做成镜像,docker commit 容器名字 镜像名 

启动nginx容器并不会自动启动nginx,需要换一种启动方式docker run -dit  /user/sbin/nginx -g "beamon off"  让nginx随机启动并已前台方式运行

Dockerfile创建镜像--

要有基础镜像centOS,一般由docker官方提供,作者信息,镜像要安装哪些服务,制定容器命令比如随机启动,

java开发人只是在这个基础镜像之上完成shell

docker build -t cmd . 运行当前命令下Dockerfile文件,文件名必须是Dockerfile

 

手动做一个nginx源码安装方式的镜像, nginx-1.13.2.tar.gz源码包,(源码安装与yum安装)shell命令,

docker images 

 

dockerFile--cmd

dockerfile--打包应用SpringBoot成镜像,ADD jar包,下面cmd命令,java- jar,打包启动了我们的服务,RUN类似commit命令,运行完将读写层转换为只读层,不建议在基础版本centOS上自己加jdk,站立版本,镜像的层RUN不能太多,&&可以合并成一行,docker是实战性非常强的技能

三节、

了解docker用途范畴,

java8灵活编程

docker环境搭建--镜像、容器 常规性维护   ==拉取镜像、创建容器、起停

docker的数据挂载、docker的仓库、dockerfile方式创建镜像

docker的便利度>

CMD 与 ENTRYPOINT(入口点,推荐容器入库,用来替代cmd)

cmd像java的main方法,维持进程,dokcer start/run 找main方法,主进程结束,容器就退出,启动cmd与dockerfile的cmd会相互覆盖,脚本cmd是缺省,覆盖就失效,cmd就是main方法结束容器就关闭了,main方法是主业 ,tomcat镜像与nginx镜像分开工作,镜像里面ENTRYPOINT命令不可更改

docker ps 查看所有镜像

 

将Spring Boot服务部署到Docker 30:17

dockerFile打包怎么打 

FROM openjdk:8     基础镜像

ADD ["member-1.0.jar","web.jar"]

EXPOSE 8080

ENTRYPOINT ["java","-jar","/web.jar"]

 

docker buikd -t member:test,基于dockerfile打项目镜像的动作

docker run -d --name memname imageid,基于镜像启动容器,可以绑定端口

docker inspect 容器进程名称,查看容器详情

docker rm -f mem 容器进程名称。移除容器

本地打maven包,包上传docker环境,打镜像,运行

docker-maven-plugin插件,docker客户端maven依赖,所有过程直接在客户端运行,在pom文件配置服务端地址

安装windows的DockerToolbox,docker-machine env   docker-machine ssh 

vi /var/lib/boot2docker/profile   第三行配置push时候仓库的地址 rancher

idea的maven插件,本地maven生成的包和镜像直接上传到私有仓库,

服务器直接run就可以,本地组合成一条maven命令打包push,然后服务器启动就可以,docker的dev环境很实用

分布式不好弄【可用Compose编排解决】

linux版是在jenkins上集成  

 

以上都是docker镜像的发布这个层面

--------------------------------

docker容器管理工具,Compose编排服务

mysql

nginx

web

每一个项目做成镜像

 docker-compose version

docker-compose up 【-d】 直接启动管理多个容器,会启动上图三个容器

docker-compose down 把容器全部卸载掉

docker ps -a

docker images

docker -rmi imgid

docker rm -f 镜像id

docker push 镜像名称 手动push镜像到私有仓库

compose的使用非常简单,配置那个文件就可以,编排启动多个镜像

大范围编排要用k8s了 

 

docker的网络比较low

容器与主机用的docker0网桥,一台主机内的容器网络互通的,但是多台主机的容器网络是不通的,swarm,nat

route 命令查看路由信息

路由表加路由

设置了还是ping不同,是因为接收方虽然接受到了包但是没有转发用已下方式解决

只是解决了A的容器到B容器的网络,那么B容器到A容易也得有相同的配置

线上环境需要  git/maven/jekins   --docker,  jekins拉git的包,用maven打包到宿主机,拉dockerfile与运行compose[只能操作一台宿主机]生成容器

手动跑到容器里面去修改jar包也可以,但是不推荐这么操作

-----

docker machine只是一个客户端

 

K8S:

K8S由master和node节点组成,master是主节点负责管理和控制,node是工作节点里面是具体的内容

docker swarm 和 docker compose一样,都是容器编排神器

K8S,单机玩docker就docker就ok,多台机器玩docker就必须用k8s,主要玩的master

每台机器都操作很累,所以有了k8s等,目标是为docker环境建造运行环境=pod

pod

kubelet同servlet,kubeproxy,docker

pot和容器到处跑,到处飘逸,不稳定,service负责来找到具体的pod,

安装k8s的yum源

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值