社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

Java技术栈 • 3 年前 • 431 次点击  

Java技术栈

www.javastack.cn

关注阅读更多优质文章



上一篇:年轻人的第一个 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 镜像,我们就能在任何安装有 Docker 的机器上运行,不用再重复配置环境安装依赖等,是不是很爽?

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

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

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

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






关注Java技术栈看更多干货



戳原文,获取精选面试题!
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/75136
 
431 次点击