zoukankan      html  css  js  c++  java
  • 年轻人的第一个 Docker 应用,大大提高生产力!

    上一篇:年轻人的第一个 Spring Boot 应用!

    哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂。

    这几年 Docker 实在太火了,Docker 是干嘛的?做 Java 的怎么能不知道 Docker?所以,本篇栈长带大家来做第一个 Docker 应用,你就有个基本认识了。

    可能有些人觉得 Docker 和自己没多大关系,自己写好代码就行了,Docker 那是运维用的东西,看完这篇,我想改变你的想法。

    一、什么是 Docker?

    Docker 是现在最主流的开源容器,遵循 Apache 2.0 协议,使用 GO 语言进行开发,始于 2013 年,现已加入 Linux 基金会。

    Docker 的核心思想是:"Build once, Run anywhere",即:一次构建,处处运行,这里可以是一个操作系统、一个 Web 应用,或者一个数据库服务等。

    我们可以将 Docker 理解为一个轻量级的沙盒,Docker 容器完全使用沙盒机制,每个容器内都有其独立运行的环境和组件,容器之间是相互隔离互不影响的,也可以进行容器间的通信。

    Docker 支持所有主流的操作系统,如:Linux/Mac/Windows,所有主流的云服务也支持 Docker,所以,我们可以将应用及依赖、环境信息等打包到一个 Docker 容器中,可以很轻松的实现应用发布、迁移等。

    Docker 官网:

    https://www.docker.com/

    Docker 代码托管:

    https://github.com/docker

    二、安装 Docker

    Docker 有社区版、企业版。社区版是开源免费的,企业版是收费的,当然也会有更牛逼的特性和服务,一般的应用社区版的足够了。

    Docker 的安装十分简单,栈长这里以 Mac 和 Docker 社区版为例作为安装演示。

    打开 Docker 开始页:

    https://www.docker.com/get-started

    下载 Mac 版 Docker 安装包直接安装即可。

    安装完后使用 docker -v 命令进行可以查看 Docker 版本:

    $ docker -v
    Docker version 19.03.13, build 4484c46d9d、
    

    使用 docker version 还可以看到完整版本信息:

    docker version
    Client: Docker Engine - Community
     Cloud integration  0.1.18
     Version:           19.03.13
     API version:       1.40
     Go version:        go1.13.15
     Git commit:        4484c46d9d
     Built:             Wed Sep 16 16:58:31 2020
     OS/Arch:           darwin/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.13
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.13.15
      Git commit:       4484c46d9d
      Built:            Wed Sep 16 17:07:04 2020
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          v1.3.7
      GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
     runc:
      Version:          1.0.0-rc10
      GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    

    看到 Docker 版本信息表示安装成功了。

    三、启动 Docker

    Mac 版本的 Docker 只要点击应用图标进入就自动启动了,也可以设置开机自动启动。

    Mac 版 Docker 官方就自带了控制台客户端,通过 Dashboard 菜单进入。

    通过控制台可以进行容器、镜像的管理、设置等。

    总之 Docker 的安装和启动都非常简单,不同的系统环境都可以轻松完成。

    四、第一个 Docker 应用

    熟悉 Tomcat 的朋友都知道,Tomcat 安装后 Webapp 下面会自带一些 Web 项目。关于 Tomcat 系列教程可以关注公众号Java技术栈搜索阅读。

    Docker 也是如此,Docker 安装完后也会自带一些镜像,可以在控制台中看到,也可以使用docker images 命令查看本地所有 Docker 镜像。

    如下图所示,切换到 Images:

    Docker 自带了一个 docker tutorial 镜像,这是一个学习 Docker 的向导镜像,本身是一个 Web 应用的镜像,怎么把它启动起来呢?

    镜像只是一个只读的静态文件,不能运行,容器才是镜像的运行实例,所以需要新增一个容器来运行。

    客户端运行

    最简单的方法是点击该镜像右边的运行按钮:

    在上面的对话框中填写容器的必要信息,如这里容器的端口和映射本机的端口都是 80,最后点击运行按钮。

    这里 Docker 容器中多了一个刚才新建的 docker-tutorial 容器,并且运行在 80 端口。

    那么我们来访问一下这个 Docker 应用,通过该容器右侧的打开浏览器或者输入 http://localhost/ 进行访问:

    恭喜你,已经运行成功了!

    命令行运行

    客户端操作只是辅助,命令行才是精髓,学习 Docker 我们也要记住常用的命令,其实我们刚才新建容器、运行容器都是通过这条命令一次完成的:

    docker run -d -p 80:80 docker/getting-started

    这样就等同于基于镜像新建容器、再运行该容器。

    简单解释下各个参数的意思:

    也可以缩简成:

    docker run -dp 80:80 docker/getting-started

    所以还是以这个镜像为例,先在客户端停掉该容器,然后再用命令来启动下:

    $ docker run -dp 80:80 docker101tutorial
    9df38488adcc2a53dad65691854ffc603e1fb3e25954183b83200809805b0d93
    

    启动成功会输出该容器的 ID.

    通过 docker ps 命令可以查看所有正在运行中的容器:

    $ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    9df38488adcc        docker101tutorial   "/docker-entrypoint.…"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp   hopeful_gauss
    

    可以看到,我们的 docker101tutorial 容器又运行起来了,也可以正常访问。

    另外,通过 docker ps -a 命令可以查看所有容器。

    四、结语

    本文栈长简单介绍了下 Docker 的基本概念,Docker 的安装和启动,以及第一个 Docker 应用的运行。

    有了 Docker 镜像,我们就能在任何安装有 Docker 的机器上运行,不用再重复配置环境安装依赖等,是不是很爽?

    Docker 公共仓库中还有许多官方提供好的镜像,如:Nginx、MySQL、Redis 等,都可以直接就能拿来用,所以,别再说 Docker 只是运维用的东西,和 Java 开发没多大关系,用好它,我们开发效率杠杠的,也能提高我们的技术水平。

    好了,第一个年轻人的 Docker 应用就到这里了,后续栈长还会带来更多 Docker 实用性的教程,比如 Spring Boot 的部署以及与 IDEA 的集成使用等,关注公众号Java技术栈第一时间推送。

    觉得不错,在看、分享转发一下,写文章不易,需要你们的鼓励,感谢各位老铁们!

    版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。

    近期热文推荐:

    1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

    2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

    3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

    4.吊打 Tomcat ,Undertow 性能很炸!!

    5.《Java开发手册(嵩山版)》最新发布,速速下载!

    觉得不错,别忘了随手点赞+转发哦!

  • 相关阅读:
    es6实现简单模板编译
    JavaScript实现自定义短信模板
    关于JavaScript设计模式的学习(二)
    js获取可编辑区域光标位置
    关于JavaScript设计模式(一)
    为什么axios请求接口会发起两次请求
    axios基本用法
    webpack 配置文件
    IDEA系列(六)一This file is indented with tabs instead of 4 space
    IDEA系列(五)一控制台中文乱码
  • 原文地址:https://www.cnblogs.com/javastack/p/13963531.html
Copyright © 2011-2022 走看看