docker 学习

centos7安装docker 步骤
1、Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。

社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。
一、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本
在这里插入图片描述
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum update
3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源
安装必要的依赖工具
$ yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息(阿里云镜像源)
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新并安装Docker-CE
$ yum makecache fast
$ yum -y install docker-ce
6、设置docker镜像加速器
登录阿里云首页-点击控制台-点击左上角菜单键-点击镜像与容器服务
在这里插入图片描述
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://4651usua.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
到此daoker安装完成
二、安装docker-compose
1、win10浏览器设置host文件域名解析对应ip地址直接访问下面链接即可,下载到电脑本地上传到linux服务器的/usr/local/bin/ 并赋予执行权限

https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-linux-x86_64
在这里插入图片描述

或者直接linux安装如下:
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

2、 到此docker-compose安装完成检查是否安装成功
docker-compose version
在这里插入图片描述
四、参考docker官方文档体验docker-compose https://docs.docker.com/compose/gettingstarted/
先决条件
确保您已经安装了Docker Engine 和Docker Compose。您不需要安装 Python 或 Redis,因为两者都由 Docker 镜像提供。

第 1 步:设置
定义应用程序依赖项。

为项目创建一个目录:

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)
===================================================================
在此示例中,redis是应用程序网络上的 redis 容器的主机名。我们使用 Redis 的默认端口,6379.

处理瞬态错误

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

requirements.txt在您的项目目录中创建另一个文件并将其粘贴到:

flask
redis
第 2 步:创建一个 Dockerfile
在此步骤中,您将编写一个用于构建 Docker 映像的 Dockerfile。该图像包含 Python 应用程序所需的所有依赖项,包括 Python 本身。

在您的项目目录中,创建一个名为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
EXPOSE 5000
COPY . .
CMD [“flask”, “run”]

=========================================================
这告诉 Docker:

从 Python 3.7 映像开始构建映像。
将工作目录设置为/code.
设置flask命令使用的环境变量。
安装 gcc 和其他依赖项
复制requirements.txt并安装 Python 依赖项。
将元数据添加到图像以描述容器正在侦听端口 5000
将.项目中的当前目录复制到.镜像中的workdir 。
将容器的默认命令设置为flask run.
有关如何编写 Dockerfile 的更多信息,请参阅 Docker 用户指南 和Dockerfile 参考。

第 3 步:在 Compose 文件中定义服务
docker-compose.yml在您的项目目录中创建一个名为的文件并粘贴以下内容:

version: “3.9”
services:
web:
build: .
ports:
- “5000:5000”
redis:
image: “redis:alpine”

===========================================================================================
这个 Compose 文件定义了两个服务:web和redis.

网络服务
该web服务使用从Dockerfile当前目录中构建的映像。然后它将容器和主机绑定到暴露的端口5000. 此示例服务使用 Flask Web 服务器的默认端口5000.

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

第 4 步:使用 Compose 构建并运行您的应用程序

从您的项目目录,通过运行启动您的应用程序docker-compose up。

docker-compose up
oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=1, just started
Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
Server initialized
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.
Compose 会拉取一个 Redis 镜像,为您的代码构建一个镜像,并启动您定义的服务。在这种情况下,代码会在构建时静态复制到映像中。

**

如果报错构建失败请检查docker-compoe版本号是否为2.0以上

**

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

如果您在 Linux、Mac 的 Docker 桌面或 Windows 的 Docker 桌面上本地使用 Docker,那么 Web 应用程序现在应该在 Docker 守护程序主机上侦听端口 5000。将 Web 浏览器指向 http://localhost:5000 以查找Hello World消息。如果这不能解决,您也可以尝试 http://127.0.0.1:5000。

如果您在 Mac 或 Windows 上使用 Docker Machine,请使用docker-machine ip MACHINE_VM获取 Docker 主机的 IP 地址。然后,http://MACHINE_VM_IP:5000在浏览器中打开 。
在这里插入图片描述

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

浏览器中的你好世界

刷新页面。

数字应该递增。

浏览器中的你好世界

切换到另一个终端窗口,然后键入docker image ls以列出本地图像。

此时列出图像应返回redis和web。

docker image ls
您可以使用docker inspect .

停止应用程序,方法是docker-compose down 在第二个终端的项目目录中运行,或者在启动应用程序的原始终端中按 CTRL+C。

第 5 步:编辑 Compose 文件以添加绑定挂载
编辑docker-compose.yml在项目目录添加 绑定安装的web服务:

version: “3.9”
services:
web:
build: .
ports:
- “5000:5000”
volumes:
- .:/code
environment:
FLASK_ENV: development
redis:
image: “redis:alpine”
新volumes密钥将主机上的项目目录(当前目录)挂载到/code容器内部,允许您即时修改代码,而无需重新构建映像。该environment键设置 FLASK_ENV环境变量,它告诉flask run在开发模式下运行,并重新加载更改代码。这种模式应该只在开发中使用。

第 6 步:使用 Compose 重新构建并运行应用程序
从您的项目目录中,键入docker-compose up以使用更新的 Compose 文件构建应用程序,然后运行它。

docker-compose up
Hello World再次在 Web 浏览器中检查消息,然后刷新以查看计数增量。

共享文件夹、卷和绑定安装

如果您的项目在Users目录 ( cd ~) 之外,那么您需要共享您正在使用的 Dockerfile 和卷的驱动器或位置。如果您收到表明未找到应用程序文件、卷安装被拒绝或服务无法启动的运行时错误,请尝试启用文件或驱动器共享。对于位于C:\Users(Windows) 或/Users(Mac)之外的项目,卷挂载需要共享驱动器,并且对于使用Linux 容器的Docker Desktop for Windows 上的任何项目都需要共享驱动器 。有关更多信息,请参阅Docker for Mac 上的文件共享,以及有关如何在容器中管理数据的一般示例 。

如果您在较旧的 Windows 操作系统上使用 Oracle VirtualBox,您可能会遇到此VB 故障单 中所述的共享文件夹问题。较新的 Windows 系统满足Docker Desktop for Windows的要求,不需要 VirtualBox。

第 7 步:更新应用程序
由于应用程序代码现在使用卷挂载到容器中,因此您可以对其代码进行更改并立即查看更改,而无需重新构建映像。

更改问候语app.py并保存。例如,将Hello World! 消息更改为Hello from Docker!:

return ‘Hello from Docker! I have been seen {} times.\n’.format(count)
在浏览器中刷新应用程序。应该更新问候语,并且计数器应该仍在增加。

浏览器中的你好世界

第 8 步:尝试一些其他命令
如果您想在后台运行您的服务,您可以将-d标志(用于“分离”模式)传递给docker-compose up并用于docker-compose ps查看当前正在运行的内容:

docker-compose up -d
docker-compose ps
5000/tcp
该docker-compose run命令允许您为您的服务运行一次性命令。例如,要查看web服务可用的环境变量 :

docker-compose run web env
请参阅docker-compose --help以查看其他可用命令。您还可以为bash 和 zsh shell安装命令完成,这也会显示可用的命令。

如果您使用 Compose 启动 Compose docker-compose up -d,请在完成服务后停止服务:

docker-compose stop
您可以使用以下down 命令将所有内容都关闭,完全删除容器。传递–volumes给 Redis 容器使用的数据卷:

docker-compose down --volumes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值