Docker 入门实战

简单介绍

Docker架构
这里写图片描述

Docker解决了开发与运维环境差异问题,使得开发和运维可以使用同一种语言沟通,并且与微服务、持续集成等概念相辅相成。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境,而且在项目实施中,测试环境和生产环境可以实现持续集成。大量节约开发、测试、部署的时间。

Docker不是虚拟机
这里写图片描述

Docker容器不像虚拟机那样需要额外的管理程序,它依赖系统内核运行,所以在资源开销上比虚拟机那种形式要低很多。

使用Dockerfile,可以代替以往的繁琐的更新,而且这些更新是可跟踪的,在开发环境中这种形式更为可靠。

容器与镜像

  • 镜像(Image)就是一堆只读层(read-only layer)的统一视角。

  • 容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

要点:容器 = 镜像 + 读写层。详细解释参看10张图带你深入理解Docker容器和镜像

使用Dockerfile文件创建镜像

Dockerfile是一个包含用于组合镜像的命令的文本文档。可以使用在命令行中调用的任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。为了指定基本映像,第一条指令必须是FROM。

以上是关于Dockerfile文件的一个简单介绍,下面来看看具体如何做。

首先使用以下命令创建一个目录。

$ mkdir -p /home/chm/docker/java-docker-app

使用touch命令创建一个Hello.java文件。这个 Hello.java 的代码内容如下 :

class Hello{  
    public static void main(String[] args){  
        System.out.println("This is first java app \n by using Docker");  
    }  
}

创建Java文件后,接着创建一个Dockerfile文件,其中包含了Docker的说明。 Dockerfile不包含任何文件扩展名。 所以这个文件简单使用Dockerfile作为名称保存即可。此 Dockerfile 文件的内容如下:

这里写图片描述
所有指令要使用大写字母编写,因为这是它的惯例(约定)。

此时java-docker-app目录下就包含以下两个文件:

这里写图片描述

现在,按照以下命令创建一个镜像,在以下命令中,java-app是的镜像名称。

这里写图片描述

如果未安装Java 8,那么会自动下载Java 8安装再执行。注意在Docker中镜像是分层存储的,Dockerfile文件中的每一行都会产生一个新层,从上图可以看到,每层都会产生一个新的id。这样做的好处很明显,对于多个images可以共享相同的层。

在成功构建镜像后。 我们可以通过docker images命令查看到我们创建的镜像。接下来,我们可以运行Docker镜像了。

运行Docker镜像

这里写图片描述
在这里可以看到,在运行sudo docker run java-app之后,它产生了一个输出。

向容器提交

使用下面的命令启动nginx镜像,如果没有可以pull一下。

这里写图片描述

然后将index.html文件拷贝到容器当中

$ docker cp index.html 1dc318c97a09://usr/share/nginx/html

index.html文件内容很简单:

<html>
<h1>Docker is fun!</h1>
</html>

这时打开浏览器,访问本地的8080端口,可以看到nginx的欢迎也改成了我们拷贝进去的页面。

这里写图片描述

但是如果关闭容器,再去访问本地8080端口是,会发现我们的提交的就无效了,也就是说容器不会主动记住你的copy进去的内容。

这时如果想要容器记住你的修改,那么需要使用docker commit命令。提交会生成一个新的镜像。nginx-fun就是镜像名。
这里写图片描述
原来的nginx镜像并不会记住我们提交的文件,我们运行nginx-fun镜像才可以看到我们提交的文件。nginx-fun镜像是一个在nginx镜像基础上生成了包含我们提交内容的一个新的镜像。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值