您当前的位置: 首页 >  docker

杨林伟

暂无认证

  • 4浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

漫谈容器化技术(docker实践篇)

杨林伟 发布时间:2022-01-11 15:30:39 ,浏览量:4

文章目录
  • 01 引言
  • 02 Dockerfile
    • 2.1 制作镜像
    • 2.2 指令详解
  • 03 Docker Compose
    • 3.1使用示例
      • 3.1.1 Dockerfile定义
      • 3.1.2 Docker Compose定义
      • 3.1.3 启动
    • 3.2 yml 配置
  • 04 Docker Machine
    • 4.1 简介
    • 4.2 安装
      • 4.2.1 Linux 安装命令
      • 4.2.2 macOS 安装命令
      • 4.2.3 Windows 安装命令
    • 4.3 使用
      • 4.3.1 使用示例
      • 4.3.2 命令参数

01 引言

在前面的博客,关于容器化技术,我写了相关的博客,有兴趣的同学可以参阅下:

  • 《漫谈容器化技术》
  • 《漫谈容器化技术(docker原理篇)》
  • 《漫谈容器化技术(docker使用篇)》

本文主要讲解的是docker的操作实践,主要讲解 DockerfileDocker Compose以及Docker Machine

02 Dockerfile

Dockerfile是一个用来构建镜像的脚本,文本内容包含了一条条构建镜像所需的指令,下面以制作镜像为例子讲解。

2.1 制作镜像

step1:在一个空目录下,新建一个名为 Dockerfile 文件:

vi Dockerfile

并在文件内添加以下内容:

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html

step2:在 Dockerfile 文件的存放目录下,执行构建动作(通过目录下的Dockerfile构建一个nginx:v3(镜像名称:镜像标签)):

docker build -t nginx:v3 .

注:最后的 . 代表本次执行的上下文路径

在这里插入图片描述

2.2 指令详解

参考:https://www.runoob.com/docker/docker-dockerfile.html

03 Docker Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up命令来启动并运行整个应用程序。
3.1使用示例 3.1.1 Dockerfile定义

创建一个测试目录:

$ mkdir composetest
$ cd composetest

在测试目录中创建一个名为 app.py 的文件,并复制粘贴以下内容:

import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

composetest 目录中,创建一个名为 Dockerfile的文件,内容如下:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

Dockerfile 内容解释:

  • FROM python:3.7-alpine: 从 Python 3.7 映像开始构建镜像。
  • WORKDIR /code: 将工作目录设置为 /code。
  • ENV FLASK_APP app.py:设置 flask 命令使用的环境变量。
  • RUN apk add --no-cache gcc musl-dev linux-headers: 安装 gcc,以便诸如 MarkupSafe 和 SQLAlchemy 之类的 Python 包可以编译加速。
  • COPY requirements.txt requirements.txt:复制 requirements.txt
  • RUN pip install -r requirements.txt:安装 Python 依赖项。
  • COPY . .: 将 . 项目中的当前目录复制到 . 镜像中的工作目录。
  • CMD [“flask”, “run”]: 容器提供默认的执行命令为:flask run。
3.1.2 Docker Compose定义

在测试目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:

# yaml 配置
version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

该 Compose 文件定义了两个服务:

  • web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
  • redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。
3.1.3 启动

在测试目录中,执行以下命令来启动应用程序:

docker-compose up
3.2 yml 配置

参考:https://www.runoob.com/docker/docker-compose.html

04 Docker Machine 4.1 简介
  • Docker Machine是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine命令来管理主机。
  • Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100台服务器安装上 docker
  • Docker Machine 管理的虚拟主机可以是机上的,也可以是云供应商,如阿里云,腾讯云,AWS,或 DigitalOcean
  • 使用 docker-machine 命令,您可以启动,检查,停止和重新启动托管主机,也可以升级 Docker客户端和守护程序,以及配置Docker客户端与您的主机进行通信。

在这里插入图片描述

4.2 安装

安装 Docker Machine 之前你需要先安装 DockerDocker Machine可以在多种平台上安装使用,包括LinuxMacOS以及 windows

4.2.1 Linux 安装命令
$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&

curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&

sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&

chmod +x /usr/local/bin/docker-machine
4.2.2 macOS 安装命令
$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&

curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&

chmod +x /usr/local/bin/docker-machine
4.2.3 Windows 安装命令

如果你是 Windows 平台,可以使用 Git BASH,并输入以下命令:

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&

mkdir -p "$HOME/bin" &&

curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&

chmod +x "$HOME/bin/docker-machine.exe"

查看是否安装成功:

$ docker-machine version
docker-machine version 0.16.0, build 9371605
4.3 使用 4.3.1 使用示例

通过 virtualbox 来介绍 docker-machine 的使用方法。

1、列出可用的机器:可以看到目前只有这里默认的 default 虚拟机。

$ docker-machine ls

在这里插入图片描述

2、创建机器:创建一台名为 test 的机器。

$ docker-machine create --driver virtualbox test

–driver:指定用来创建机器的驱动类型,这里是 virtualbox。

在这里插入图片描述

3、查看机器的 ip:

$ docker-machine ip test

在这里插入图片描述

4、停止机器:

$ docker-machine stop test

在这里插入图片描述 5、启动机器:

$ docker-machine start test

在这里插入图片描述 6、进入机器:

$ docker-machine ssh test

在这里插入图片描述

4.3.2 命令参数

docker-machine active:查看当前激活状态的 Docker 主机 在这里插入图片描述

命令解析config查看当前激活状态 Docker 主机的连接信息create创建 Docker 主机env显示连接到某个主机需要的环境变量inspect以 json 格式输出指定Docker的详细信息ip获取指定 Docker 主机的地址kill直接杀死指定的 Docker 主机ls列出所有的管理主机provision重新配置指定主机regenerate-certs为某个主机重新生成 TLS 信息restart重启指定的主机rm删除某台 Docker 主机,对应的虚拟机也会被删除ssh通过 SSH 连接到主机上,执行命令scp在 Docker 主机之间以及 Docker 主机和本地主机之间通过 scp 远程复制数据mount使用 SSHFS 从计算机装载或卸载目录start启动一个指定的 Docker 主机,如果对象是个虚拟机,该虚拟机将被启动status获取指定 Docker 主机的状态(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等stop停止一个指定的 Docker 主机upgrade将一个指定主机的 Docker 版本更新为最新url获取指定 Docker 主机的监听 URLversion显示 Docker Machine 的版本或者主机 Docker 版本help显示帮助信息

声明:本文为内容经过整理https://www.runoob.com/docker里面的内容而来。

关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.2530s