• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker简单安装与应用入门教程

Docker简单安装与应用入门教程

作者:何小有 字体:[增加 减小] 来源:互联网

本文主要包含Docker,安装,应用等服务器相关知识,何小有 希望可以进行参考

本文实例讲述了Docker简单安装与应用。分享给大家供大家参考,具体如下:

作为一个初次接触Docker的人来说,最大的问题是Docker是什么?Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。比如,我们在笔记本上编译测试通过的容器可以批量地在生产环境中部署,可以用于自动化测试和持续集成、发布。

还可以用于web应用的自动化打包和发布;在服务型环境中部署和调整数据库或其他的后台应用;从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

在Mac下安装Docker

打开Docker下载网址下载稳定版本,并安装和运行Docker。顶部状态栏中的鲸鱼指示Docker正在运行,并可以从终端访问。

点击顶部状态栏中的鲸鱼,选择About Docker以验证是否有最新版本。

运行这些命令来测试docker、docker-ompose、docker-machine版本是否是最新的,并且和Docker.app兼容。

$ docker --version
$ docker-compose --version
$ docker-machine --version

打开一个命令行终端,你可以运行一些Docker命令来验证Docker是否正常工作。比如使用docker version来检查你是否安装了最新版本,使用docker ps来列出正在运行的容器,使用docker run hello-world运行示例程序。

使用docker run命令可以启动一个新容器,这种单一的命令将触发安装运行序列:先在本机寻找该镜像,如果本机找不到就去Docker Hub下载这个镜像,并把镜像加载到容器中,然后启动该程序,这样容器就运行起来了。其他系统可以参考官网文档安装。

Docker示例项目

现在开始使用Docker构建应用程序,从Docker应用程序的层次结构底部开始,应用程序是一个容器,在这个层次上面是一个服务,它定义了容器在运行时的行为方式,最后,在顶层是堆栈,定义了所有服务的交互。

在过去,如果要开始编写一个Python应用程序,第一步就是在机器上安装一个Python运行库,但是,这会造成应用程序只能在您的机器运行。使用Docker可以将一个可移植的Python运行时环境作为一个镜像来获取,无需安装。然后构建可以将基础Python镜像与应用程序代码一起包括在内,确保您的应用程序、依赖项和运行时环境都一起移动。

这些可移植的镜像是由一个叫做Dockerfile的东西来定义的。

用Dockerfile定义容器

Dockerfile将定义容器内的环境中发生了什么,访问像网络接口和磁盘驱动器这样的资源是在这个环境中虚拟化的,这个环境与系统的其他部分是隔离的,所以必须将端口映射到外部世界,并具体说明想复制哪些文件到那个环境。完成这些工作后,这个Dockerfile中定义的应用程序在任何地方运行都将有完全相同的表现。

创建一个新的目录,在新目录下创建一个名为Dockerfile的文件,将以下内容复制并粘贴到该文件中保存。

# 使用官方的Python运行时环境作为父镜像
FROM python:2.7-slim
# 将工作目录设置为“/app”
WORKDIR /app
# 将当前目录内容复制到“/app”的容器中
ADD . /app
# 安装requirements.txt中指定的所有需要的软件包
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 将端口80映射到外部世界
EXPOSE 80
# 定义环境变量
ENV NAME World
# 容器启动时运行app.py
CMD ["python", "app.py"]

创建并编辑应用程序

创建requirements.txt文件,并放在与Dockerfile相同的目录下。

Flask
Redis

创建app.py文件,并放在与Dockerfile相同的目录下。

from flask import Flask
from redis import Redis, RedisError
import os
import socket
# 连接到Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
  try:
    visits = redis.incr("counter")
  except RedisError:
    visits = "<i>cannot connect to Redis, counter disabled</I>"
  html = "<h3>Hello {name}!</h3>" \
      "<b>Hostname:</b> {hostname}<br/>" \
      "<b>Visits:</b> {visits}"
  return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
  app.run(host='0.0.0.0', port=80)

很简单的就完成了应用程序部分,当Dockerfile被内置到镜像中时,由于Dockerfile的ADD命令,app.py和requirements.txt将会出现,并且app.py的输出将可以通过HTTP访问,这要归功于EXPOSE命令。

构建应用程序

打开一个命令行终端,确保仍然在新目录的顶层,运行构建命令,这会创建一个Docker镜像。

$ docker build -t friendlyhello .

构建的镜像可以在本地Docker镜像注册表中看到。

$ docker images

运行应用程序

运行应用程序,使用-p将机器的端口4000映射到容器的已发布端口80。

$ docker run -p 4000:80 friendlyhello

现在应该看到一条消息,Python在http://0.0.0.0:80上提供应用程序,但是这个消息来自容器内部,它并不知道该容器的端口80映射到4000,因此正确的URL为http://localhost:4000。

也可以在命令行终端中使用curl命令来查看相同的内容。

$ curl http://localhost:4000

这个4000:80的端口重映射是为了演示Dockerfile中的EXPOSE与使用docker run -p发布的内容之间的区别。在后面的步骤中,会将主机上的端口80映射到容器中的端口80,并使用http://localhost。

在Mac下,在命令行终端中点击CTRL + C即可退出。而在Windows系统下,CTRL + C不会停止容器。因此,首先键入CTRL + C来获取提示,或打开另一个Shell,然后键入docker container ls列出正在运行的容器,接着是docker container stop <Container NAME或ID>以停止容器。否则,当尝试在下一步中重新运行容器时,将从守护程序中收到错误响应。

现在以分离模式在后台运行应用程序。

$ docker run -d -p 4000:80 friendlyhello

容器正在后台运行,您还可以使用docker container ls查看CONTAINER ID。

$ docker container ls

可以看到CONTAINER ID与http://localhost:4000上的内容匹配。现在使用docker container stop来结束进程。

$ docker container stop 9dfc794cdc52

分享镜像

为了演示镜像的可移植性,上传我们构建的镜像,并在其他地方运行它,毕竟,将容器部署到生产环境中时,需要学习如何使用注册表。

一个注册表是一个存储库的集合,一个存储库是一个镜像集合,有点像GitHub存储库,除了代码已经建立。注册表上的帐户可以创建许多存储库。Docker CLI默认使用Docker的公共注册表。在这里使用Docker的公共注册表,是因为它免费,并且是预配置的,但是有许多公共选项可供选择,甚至可以使用Docker Trusted Registry设置您自己的私有注册表。

使用Docker ID登录

如果没有Docker帐户,请在Docker官网注册一个。然后,登录到本地机器上的Docker公共注册表。

$ docker login

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • Mac上使用Docker如何快速启动MySQL测试
  • 谈谈我对docker的理解
  • Docker占满磁盘空间的问题解决办法
  • 关于Docker的基础概念分享
  • 在Ubuntu 16.04安装与使用Docker的教程详解
  • 基于Docker的MongoDB实现授权访问的方法
  • Docker到底是什么?Docker为什么它这么火!
  • OpenStack 工作流workflows使用原理详细介绍
  • Linux中docker的使用方法讲解
  • Docker-client for python详解及简单示例

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 解析IBM虚拟化技术原理 探索测试快速化道路(1)
    • Docker v1.13.0 正式版发布
    • Docker磁盘空间使用分析与清理的方法
    • 详解Docker如何启动一个Centos镜像
    • 解决 XAMPP 和 VMWare 端口443冲突问题
    • 在Centos7中安装Docker1.12的详细教程
    • 详解Docker 国内镜像的配置及使用
    • 浅谈Docker运行Tensorboard和jupyter的方法
    • 详解docker下的Mysql镜像的使用方法
    • Docker下Tomcat容器中使用Mysql的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有