花式安装Docker

2023-06-26 221798 日常教程

//使用docker的基本要求

[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64

内核版本必须是3.10以上的。

一, 安装dockers

在安装docker之前,再说一点,docker现在有两个版本,一个叫做docker-EE企业版,收费的一个叫docker-CE社区版,免费版,其实两个版本并没有太大的偏差,不一样的是docker公司会提供后续的官方的技术支持等服务,对于我们来说,肯定用社区办的多,我们拿来学习社区办更是可以的。
Docker的官网
https://www.docker.com/
1,从Docker的官方下载
https://www.docker.com/

2.官网安装docker方法一

[root@localhost ~]# vim /etc/yum.repos.d/docke-ce.repo
//编写yum源
[docker-ce]
name=docker-ce
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
gpgcheck=0
enabled=1

[root@localhost ~]# yum repolist
//查看仓库状态

[root@localhost ~]# vim /etc/yum.repos.d/docke-ce.repo
//修改yum源
[docker-ce]
name=docker-ce
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/
gpgcheck=0
enabled=1
[root@localhost ~]# yum repolist
//查看仓库状态

[root@localhost ~]# yum -y install docker-ce
//默认下载最新版,时间慢,一般不用这个

因为网速原因,所以我们一般可以采取另外- -种方法,从我们国内下载,国内很多网站都提供了docker-ce的镜像站,比如说阿里云、网易云、清华大学镜像站等。这里我们从阿里云下载的方式来下载。

2.阿里云下载方法二

[root@localhost ~]# rm -rf /etc/yum.repos.d/docke-ce.repo
//删除刚刚的yum源

进入阿里镜像站
https://developer.aliyun.com/mirror

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@localhost ~]# ls /etc/yum.repos.d/
//查看yum源

[root@localhost ~]# yum repolist
//查看仓库状态

[root@localhost ~]# yum makecache
//做yum缓存,提速

[root@localhost ~]# yum list docker-ce.x86_64 --showduplicates | sort -r
//查看docker可用的版本

//这里我们下载指定版本18.9.0,注意并没有采取阿里云官方推荐的方法,我们分别下载了docker-ce,docker-ce-cli和containerd.io这3个组件。

[root@localhost ~]# yum -y install docker-ce-18.09.0-3.el7  docker-ce-cli-18.09.0-3.el7  tainerd.io-1.2.0-el7
//安装docker-ce,docker-ce-cli和containerd.io这3个组件

3.安装完成之后

[root@localhost ~]# systemctl  start docker
//开启docker
[root@localhost ~]# systemctl  enable docker
//docker加入开机自启
[root@localhost ~]# docker -v
Docker version 18.09.0, build 4d60db4
//查看docker版本是否是指定的版本

[root@localhost ~]# docker version
//查看docker版本信息

如果是最小化安装,来装一个tab命令补全
[root@localhost ~]# yum -y install bash-completion

二,Docker的基本概念

image:镜像
container:容器
repostry:仓库
镜像是容器运行的基石,容器是镜像运行之后的实例。

[root@localhost ~]# docker pull centos:7
//下载一个centos7镜像,特别慢不建议

1,设置加速
浏览器打开加速网站:道客云https://www.daocloud.io/

//使用docker镜像加速器,这里使用的是daocloud的加速器,当然还有其他的加速器,例
如阿里云、清华镜像站等。

[root@localhost ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

[root@localhost ~]# systemctl daemon-reload
//守护进程
[root@localhost ~]# systemctl restart docker
//重启docker

[root@localhost ~]# docker info
//查看docker的详细信息

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
//都是键值对

[root@localhost ~]# docker pull centos:7
//再次下载centos7

[root@localhost ~]# docker images
//查看本地镜像有哪些

2,更改镜像加速网站为阿里云的
https://www.aliyun.com/product/acr?spm=5176.12825654.eofdhaal5.42.366f2c4axwzdLK&aly_as=kt8HE3oy

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}

//把刚刚复制的https://x7bv0r2q.mirror.aliyuncs.com,替换掉上面的

也可以更改成这个网址,当然如果你更改之后,还需要执行reload命令,重新加载一下配置文件。

[root@docker ~]# systemctl daemon-reload 
[root@docker ~]# systemctl restart docker
[root@docker ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos

3,更改镜像加速网站为清华大学的
清华大学镜像站网址:https://mirrors.tuna.tsinghua.edu.cn/

测试:下载一个nginx
[root@localhost ~]# docker pull nginx

[root@localhost ~]# docker images
//查看本地镜像有哪些

[root@localhost ~]# docker run -itd -p 80 nginx
//多执行几次,运行多台nginx

[root@localhost ~]# docker ps
//查看docker服务

浏览器测试

开源项目:诞生于2013年,dotcloud公司的业余项目,Go语言实现。---公司改名docker
集装箱:目标是实现轻量级的操作系统虚拟化方案。让用户不需要关心容器的管理,使得操作更加简便。

docker和虚拟机、传统虚拟化的区别:
传统的虚拟机:在硬件实现虚拟化,然后创建/安装操作系统。
docker:在操作系统层面实现虚拟化,直接服用本地主机的操作系统。

为什么使用docker
1,与传统虚拟化方式相比,具有众多的优势:
a,docker容器启动在秒级
b,docker对系统资源利用率高,一台主机可以同时运行数千个docker容器
c,docker基本不消耗系统资源,使得运行在docker里面的应用的性能很高
2,其他优势:
a,更快的支付和部署:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容易来部署代码;
b,更高级的虚拟化,docker容器的运行不需要额外的支持,它是内核级的虚拟化,因此可以实现更高的性能
c,更轻松的迁移和扩展:docker几乎可以在任意平台运行,比如物理机,虚拟机,公有云,私有云,个人电脑,服务器等。
d,更简单的管理:使用docker只需要简单的修改,就可以替代以往大量的更新工作。所有的修改都一增量方式被分发和更新,从而实现自动化并且高效的管理。

docker中的基本概念:
镜像(images):只读的模板,通过这个模板创建docker容器
容器(container):是使用镜像创建并运行的实例。可以简单的将容器看做是简化版的操作系统。(可以看做是操作系统是因为里面包含root用户权限,进程空间和网络空间,还包括运行在里面的应用程序)
仓库(repository):集中存放镜像文件的地方。分为共有仓库和私有仓库。

Docker容器挂掉后Python如何自动报警与拉起重启

Python无法可靠获取容器崩溃的退出信号,应通过外部监控(如dockerevents)报警,并用tini或os.execv确保信号传递,避免在容器内使用supervisor等进程管理器。 容器崩溃时Python怎么拿到确切的退出信号 Docker容器挂掉,本质是主进程(ENTRYPOINT或CMD指定的进程)退出。Python脚本如果直接作为PID1运行,它收不到SIGTERM以外的大多数信号(...

怎样在Nginx上部署Python Flask项目_配置uWSGI反向代理

uWSGI启动必备socket、module和callable参数;module需填模块名:实例名(如app:app),非文件名;socket须用绝对路径并设chmod-socket=666;需启用master=true和processes=2;Nginx须用uwsgi_pass直连Unixsocket,正确设置proxy_set_header和proxy_bufferingoff。 uWSGI配...

Nginx访问日志怎么用Python自动分析出高频异常IP

最稳方案是正则+pandas本地解析access.log:预编译正则抽remote_addr,清洗IP(strip、去空、滤IPv6),按阈值+状态码分布(4xx/5xx>60%)+敏感路径+响应时间多维识别异常IP,流式构建字典转DataFrame并显式转换status/req_time类型,严格限定时间窗口过滤。 直接用正则+pandas统计IP出现频次最稳 别一上来就上Redis或Fl...

Interactive Docker exec with docker-py

本文详解如何使用docker-py实现真正的交互式dockerexec-it功能,通过底层socket操作连接宿主机stdin/stdout与容器内进程的I/O,解决exec_run默认非阻塞、不透传终端输入的问题。 本文详解如何使用docker-py实现真正的交互式`dockerexec-it`功能,通过底层socket操作连接宿主机stdin/stdout与容器内进程的i/o,解决`exec_...

Python后端Flask处理高并发如何部署_结合Gunicorn与Nginx负载均衡

单个Flask进程扛不住并发,因其内置服务器是单线程单进程、无连接池、无请求队列,且默认禁用多线程/多进程,无法应对I/O阻塞和高并发。 为什么单个Flask进程扛不住并发? Flask自带的app.run()是开发服务器,用的是单线程单进程WSGI服务器(Werkzeug),不支持多worker、无连接池、无请求队列缓冲。压测时一过50QPS就开始超时或500,不是代码慢,是它根本没设计用来跑线...

Flask项目怎么Docker化_编写Dockerfile与docker-compose.yml

Flask应用Docker化失败的根本原因是路径、环境变量作用域和网络绑定三者不匹配:需设WORKDIR确保模块可导入,用environment+os.getenv读变量,启动时指定--host=0.0.0.0避免监听localhost。 Flask应用启动失败:ModuleNotFoundError或ImportError 根本原因通常是工作目录不对,或Python路径没包含你的应用模块。Doc...

Python Docker部署怎么做_Dockerfile编写与Web应用容器化

Dockerfile需锁定Python小版本如python:3.11.7-slim-bookworm;先COPYrequirements.txt再pipinstall以保缓存;CMD须用exec形式确保PID1为主进程;Web服务必须绑定0.0.0.0且正确暴露端口;密钥等敏感信息禁用ENV硬编码。 PythonWeb应用的Dockerfile必须指定明确的Python版本和基础镜像 用pytho...

Django怎么用Docker部署_编写Dockerfile与Gunicorn启动命令

最小可用DjangoDockerfile需用多阶段构建:第一阶段装依赖并collectstatic,第二阶段仅复制site-packages和代码,用gunicorn监听0.0.0.0:8000,禁用runserver,设PYTHONUNBUFFERED=1确保日志实时输出。 怎么写一个最小可用的DjangoDockerfile 核心是别把开发依赖打进生产镜像,也别让manage.py直接跑在容器...