docker的使用教程

让我们带着问题学习docker

Docker是什么?为什么要使用docker?

  可能云计算的方向的并不陌生,Docker属于Linux容器的一种封装,提供简易容器使用接口,是目前流行的容器解决方案. Docker将应用程序与该程序的依赖打包在一个文件里面,运行这个文件,就产生一个虚拟的容器.

   为什么使用Docker?

  1)  更快速的交付和部署,而且容器启动很快的,秒级别,但是在spring boot项目整合,启动时间依然很长,后续如果找到原因会分享出来

  2)更高效的虚拟化和更轻松的迁移和扩展:一次打包,到处运行

  3)更简单的管理

Docker打包建议在linux环境下,我的linux是Centos 7

  补充一下yum安装原理

/**

使用yum没少安装linux中软件,有想过其中的原理吗?

YUM(缩写"Yellow dog Updater Modified"),是一个软件包管理器,yum从指定的
自动下载RPM包并安装,能够很好解决依赖关系的问题地方

YUM的基本工作原理

服务器端:: 在服务器端存放所有RPM软件包,然后分析每个RPM文件的依赖关系,将
这些数据记录成文件存放在服务器的某指定目录内

客户端:如果需要安装某个软件时,先下载服务器上面的记录的依赖性关系文件,可通过WWW或者FTP方式,通过对服务器端下载的记录数进行分析,然后取得相关软件,一次全部下载下来进行安装


**/

Docker的三个主要概念

  Docker image  :镜像是只读的,镜像中包含所需运行的文件,镜像用来创建container,一个镜像可以运行多个container,镜像可以创建Dockerfile创建,也可以从Docker hub/registry上下载

  Docker container:容器是Docker的运行的组件,启动一个镜像就是一个容器,容器是一个隔离的环境,多个容器之间不会相互影响

Docker安装

    安装docker只需运行下面的命令

yum install docker

安装完成之后,启动docker服务,并设置开机启动

//开启服务
systemctl  start docker.service
//设置开机启动
systemctl enable docker.service

查看版本信息

docker version

常用的命令

//拉取docker镜像
docker pull image_name
//查看宿主机器上的镜像,docker镜像保存在/var/lib/docker目录下
docker images
//删除镜像
docker rmi  image_name/镜像id
//查看当前有哪些容器正在运行
docker ps
//启动  停止,重启容器的命令
docker start/stop/restart 容器名字/容器的id
//后台启动一个容器,如果想进入容器的命令
docker attach container的名字/id
//删除容器的命令
docker 人民 container名字/id
查看容器的命令
docker info

Dockerfile概念

 docker镜像是一个特殊的文件系统,除了提供容器所虚的程序,库,资源,配置文件外.还包含运行时的一些配置参数(如匿名卷,环境变量,用户),镜像中不包含动态的参数,其内容在构建之后就不会再改变了,镜像的定制实际上就是定制每一层所添加的配置文件,如果把每一层修改,安装和构建的命令写入到一个脚本,用这个脚本来构建,定制镜像,这个脚本就是Dockerfile

   Dockerfile是一个文本文件,其内包含一条条的指令(Instruction),有了Dockerfile,当我们需要定制自己额外的需求,只需在Dockerfile上添加或者修改即可,重新生成image

dockerfile目录及格式

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD service-zuul-1.0.0-SNAPSHOT.jar app.jar
#RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 80

这是zuul的dockerfile脚本文件,这里简单减少指令作用

01 From  构建的镜像继承自某个base image

FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>

  from指令Dockerfile的第一指令,其中tag和和digest是可选的,如果不提供则使用latest

02 Run  在镜像的构建过程中执行特定的命令,并生成一个中间的镜像

03  EXPOSE 为构建镜像设置监听端口,使容器在运行时监听

  EXPOSE指令并不会让容器监听host的端口,如果需要,需要在doceker run -p参数来发布到host的某个端口

04  ENV

在构建的镜像中设置环境变量,在后续的Dockerfile指令中可以直接使用

05  ADD

在构建镜像时,复制上下文中的文件到镜像,这里复制的打包好的springboot 的jar文件

06 ENTRYPOINT

指定镜像的执行程序,CMD和ENTRYPOINT至少得使用一个

07 VOLUME

指定镜像内的目录为数据卷

在容器运行的时候,dockerfile会把镜像的数据卷的内容复制到容器中去

springboot+maven+docker项目搭建

http://www.cnblogs.com/ityouknow/p/8599093.html

猜你喜欢

转载自www.cnblogs.com/developerxiaofeng/p/9120786.html