跳至主要內容

十四、Docker 容器运行 Web 应用

安图新大约 4 分钟云原生Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源

Docker 可以让开发者打包它们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker 使用完全使用沙箱机制,两个容器之间不会有任何接口 (这个有点像 iPhone 的 app ) ,更重要的是容器性能开销极低

学习前提

在继续阅读之前,我们希望你对 Linux 有一些基本的了解,包括

1、 会使用Linux常用的命令;
2、 知道大部分的Linux常识,比如终端serviceip用户等;
3、 熟练使用Ubuntu或者Centos或者MacOS种的一种昂;

如果你对这些知识还是一知半解,可以访问我们的 Linux 基础教程 先进行一些简单的了解

Docker的应用场景

1、 Web应用的自动化打包和发布;
2、 自动化测试和持续集成、发布;
3、 在服务型环境中部署和调整数据库或其他的后台应用;
4、 从头编译或者扩展现有的OpenShift或CloudFoundry平台来搭建自己的PaaS环境;

Docker 的优点

1、 简化程序;

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化
Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理
方便快捷已经是 Docker 的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成

2、 解决运维配置噩梦;

在没有 Docker 之前,每一台机器,每一个要用到的依赖,几乎都要重新配置一遍
比如新增一台 MySQL 数据库,就要从头开始配置所有环境
有了 Docker 之后,只需要从仓库里把之前的 MySQL 镜像拉出来,直接使用

3、 节省开支;

使用 Docker ,可以在一台电脑上部署多个服务,多个应用,从而充分榨干每一滴性能
同时,又不用担心多个应用之间出现相互访问的情况

相关链接

Docker 官网: http://www.docker.comopen in new window

Github Docker 源码: https://github.com/docker/dockeropen in new window

前面我们运行的容器并没什么大作用,这次,我们尝试使用 docker 构建一个 web 应用程序

我们将在 Docker 容器中运行一个 Python Flask 应用来运行一个 web 应用

我特意去 Docker Hubopen in new window 找了一圈,发现这个 jcdemo/flaskapp 是最好的,小,而且刚好满足我们的需求

拉取 jcdemo/flaskapp 镜像

使用下面的命令将 jcdemo/flaskapp 镜像拉取到本地

[root@www.hotmindshare.com ~]# docker pull jcdemo/flaskapp
latest: Pulling from jcdemo/flaskapp
81033e7c1d6a: Pull complete 
9b61101706a6: Pull complete 
35b21c1a8b97: Pull complete 
4856f5aeeec4: Pull complete 
ce9545e7847c: Pull complete 
c0a17c8bb7b9: Pull complete 
c8d70066c010: Pull complete 
Digest: sha256:c0c7fb38dfa6dc371e8c04827eb83ff265401ddc25b624ed58d05b1cce0026f8
Status: Downloaded newer image for jcdemo/flaskapp:latest
f6a0e149983a29294abd76c141f44e8da59bcbaf1d283be63fca803a486f9582

Docker 容器运行 Web 应用

我们使用下面的命令运行我们的 Web 应用容器 jcdemo/flaskapp

[root@www.hotmindshare.com ~]# docker run -d -P jcdemo/flaskapp
d07b599f11e473c3112002f9b697efd4f01b0f7563490db65cfc11ba8d816bbb

参数说明
-d让容器在后台运行
-P将容器内部使用的网络端口映射到我们使用的主机上

查看 WEB 应用容器

使用docker ps 来查看我们正在运行的容器 (字段有删除)

[root@www.hotmindshare.com ~]# docker ps
CONTAINER ID  STATUS         PORTS
d07b599f11e4  Up 3 minutes   0.0.0.0:32768->5000/tcp

可以看到,想比较于之间的容器,这个容器的 PORTS 字段是有值的

PORTS
000.0:32768->5000/tcp

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上

这样我们就可以通过 http://localhost:32768/ 来访问 Web 应用

 
上次编辑于:
贡献者: Andy