年轻人的第一个 Docker 应用,大大提高生产力

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

年轻人的第一个 Docker 应用,大大提高生产力

下载 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 的安装和启动都非常简单,不同的系统环境都可以轻松完成。

四、第一个 Docker 应用

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

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

如下图所示,切换到 Images:

年轻人的第一个 Docker 应用,大大提高生产力

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

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

客户端运行

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

年轻人的第一个 Docker 应用,大大提高生产力

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

年轻人的第一个 Docker 应用,大大提高生产力

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

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

年轻人的第一个 Docker 应用,大大提高生产力

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

命令行运行

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

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

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

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

年轻人的第一个 Docker 应用,大大提高生产力

也可以缩简成:

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 开发没多大关系,用好它,我们开发效率杠杠的,也能提高我们的技术水平。

您可能还会对下面的文章感兴趣: