基于官网流程安装DOCKER&DOCKER-COMPOSE

一、DOCKER

1.操作系统要求

要安装 Docker 引擎,您需要 CentOS 7、CentOS 8(流)或 CentOS 9(流)的维护版本。不支持或测试存档版本。

centos-extras必须启用存储库。这个库默认是启用的,但是如果你禁用了它,你需要 重新启用它

建议使用overlay2存储驱动程序。

2.卸载旧版本

旧版本的 Docker 被称为dockerdocker-engine。如果安装了这些,请卸载它们以及相关的依赖项。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum如果报告没有安装这些软件包,那也没关系。

/var/lib/docker/包括图像、容器、卷和网络)的内容将被保留。Docker 引擎包现在称为docker-ce.

3.安装方法

您可以根据需要以不同的方式安装 Docker Engine:

  • 大多数用户 设置 Docker 的存储库并从中安装,以简化安装和升级任务。这是推荐的方法。
  • 一些用户下载 RPM 包并 手动安装并完全手动管理升级。这在诸如在无法访问 Internet 的气隙系统上安装 Docker 等情况下非常有用。
  • 在测试和开发环境中,一些用户选择使用自动化 的便捷脚本来安装 Docker。

4.使用存储库安装

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

4.1设置存储库

安装yum-utils包(提供yum-config-manager 实用程序)并设置存储库。

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.2安装 Docker 引擎

  1. 安装最新版本的 Docker Engine、containerd 和 Docker Compose 或转到下一步安装特定版本:

    $ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    如果提示接受 GPG 密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果匹配,则接受。

    此命令安装 Docker,但不会启动 Docker。它还会创建一个 docker组,但是默认情况下不会向该组添加任何用户。

  2. 要安装特定版本的 Docker 引擎,请在存储库中列出可用版本,然后选择并安装:

    列出并排序存储库中可用的版本。此示例按版本号从高到低对结果进行排序,并被截断:

    $ yum list docker-ce --showduplicates | sort -r
    
    docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable
    

    返回的列表取决于启用了哪些存储库,并且特定于您的 CentOS 版本(.el7在此示例中由后缀表示)。

    b. 通过其完全限定的包名称安装特定版本,即包名称 ( docker-ce) 加上版本字符串(第 2 列),从第一个冒号 ( :) 开始,直到第一个连字符,由连字符 ( -) 分隔。例如,docker-ce-18.09.1

    $ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    

    此命令安装 Docker,但不会启动 Docker。它还会创建一个 docker组,但是默认情况下不会向该组添加任何用户。

  3. Start Docker.

    $ sudo systemctl start docker
    
  4. 配置国内镜像仓库源

    sudo vim /etc/docker/daemon.json
    {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]}
    

    重新加载服务及重启

    systemctl daemon-reload
    systemctl restart docker
    
  5. 通过运行镜像hello-world验证 Docker 引擎是否已正确安装。

    $ sudo docker run hello-world
    

二、DOCKER-COMPOSE

安装

  1. 要下载并安装独立的 Compose,请运行:

      $ curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    
  2. 将可执行权限应用于安装目标路径中的独立二进制文件。

  3. 使用 测试和执行组合命令docker-compose

笔记

如果安装后命令docker-compose失败,请检查您的路径。您还可以创建指向/usr/bin路径中任何其他目录的符号链接。例如:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  1. 测试安装。

    $ docker compose version
    

卸载

手动安装卸载

如果您曾经curl安装过 Compose CLI 插件,要卸载它,请运行:

$ rm $DOCKER_CONFIG/cli-plugins/docker-compose
为所有用户移除

或者,如果您已经为所有用户安装了 Compose,请运行:

$ rm /usr/local/lib/docker/cli-plugins/docker-compose

出现权限被拒绝错误?

如果您使用上述任一方法遇到权限被拒绝错误,则您没有权限允许您删除 docker-compose. 要强制删除,sudo请添加上述任一说明并再次运行。

检查 Compose CLI 插件的位置

要检查 Compose 的安装位置,请使用:

$ docker info --format '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}'

docker-compose部署python应用示例

先决条件

您需要在您的机器上安装 Docker Engine 和 Docker Compose。您可以:

您不需要安装 Python 或 Redis,因为它们都是由 Docker 映像提供的。

第 1 步:定义应用程序依赖

文件路径示例图

  1. 为项目创建一个目录:

    $ mkdir composetest
    $ cd composetest
    
  2. 在您的项目目录中创建一个名为的文件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)
    

    在此示例中,redis是应用程序网络上的 redis 容器的主机名。我们使用 Redis 的默认端口,6379.

    处理暂时性错误

    注意get_hit_count函数的编写方式。如果 redis 服务不可用,这个基本的重试循环让我们可以多次尝试我们的请求。这在应用程序联机时启动时很有用,但如果 Redis 服务需要在应用程序的生命周期内随时重新启动,也会使应用程序更具弹性。在集群中,这也有助于处理节点之间的瞬间连接中断。

  3. 在您的项目目录中创建另一个名为的文件requirements.txt并将以下代码粘贴到:

    flask
    redis
    
第 2 步:创建 Dockerfile

Dockerfile 用于构建 Docker 映像。该映像包含 Python 应用程序所需的所有依赖项,包括 Python 本身。

在您的项目目录中,创建一个名为的文件Dockerfile并将以下代码粘贴到:

# syntax=docker/dockerfile:1
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
EXPOSE 5000
COPY . .
CMD ["flask", "run"]

这告诉 Docker:

  • 从 Python 3.7 映像开始构建映像。
  • 将工作目录设置为/code.
  • 设置命令使用的环境变量flask
  • 安装 gcc 和其他依赖
  • 复制requirements.txt并安装 Python 依赖项。
  • 在镜像中添加元数据来描述容器正在监听 5000 端口
  • 将项目中的当前目录复制.到镜像中的workdir .
  • 将容器的默认命令设置为flask run.

重要的

检查Dockerfile是否没有文件扩展名,例如.txt. 某些编辑器可能会自动附加此文件扩展名,这会在您运行应用程序时导致错误。

第 3 步:在 Compose 文件中定义服务

在您的项目目录中创建一个名为的文件docker-compose.yml并粘贴以下内容:

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:5000"
  redis:
    image: "redis:alpine"

这个 Compose 文件定义了两个服务:webredis.

该服务使用从当前目录web构建的图像。Dockerfile然后它将容器和主机绑定到公开的端口,8000. 此示例服务使用 Flask Web 服务器的默认端口5000.

redis服务使用 从 Docker Hub 注册表中提取的公共Redis映像。

第 4 步:使用 Compose 构建并运行您的应用程序
  1. 在您的项目目录中,通过运行启动您的应用程序docker compose up

    $ docker compose up
    
    Creating network "composetest_default" with the default driver
    Creating composetest_web_1 ...
    Creating composetest_redis_1 ...
    Creating composetest_web_1
    Creating composetest_redis_1 ... done
    Attaching to composetest_web_1, composetest_redis_1
    web_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
    redis_1  | 1:C 17 Aug 22:11:10.480 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    redis_1  | 1:C 17 Aug 22:11:10.480 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=1, just started
    redis_1  | 1:C 17 Aug 22:11:10.480 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
    web_1    |  * Restarting with stat
    redis_1  | 1:M 17 Aug 22:11:10.483 * Running mode=standalone, port=6379.
    redis_1  | 1:M 17 Aug 22:11:10.483 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    web_1    |  * Debugger is active!
    redis_1  | 1:M 17 Aug 22:11:10.483 # Server initialized
    redis_1  | 1:M 17 Aug 22:11:10.483 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
    web_1    |  * Debugger PIN: 330-787-903
    redis_1  | 1:M 17 Aug 22:11:10.483 * Ready to accept connections
    

    Compose 拉取 Redis 镜像,为您的代码构建镜像,并启动您定义的服务。在这种情况下,代码在构建时被静态复制到图像中。

  2. 在浏览器中输入 http://localhost:8000/ 以查看正在运行的应用程序。

    如果这没有解决,您也可以尝试 http://127.0.0.1:8000。

    您应该会在浏览器中看到一条消息:

    Hello World! I have been seen 1 times.
    

!](https://img-blog.csdnimg.cn/3d4574a7b60e4beb8b80d93f8a316a43.jpeg)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值