1. docker 入门到放弃1----安装、注册、使用并上传自定义镜像
  2. docker 入门到放弃2----拉取镜像,安装常用环境并上传
  3. docker 入门到放弃3-- docker安装mysql8.0并启动
  4. docker 入门到放弃4-- docker容器内启动配置mysql8.0,完成外部访问
  5. docker 入门到放弃4.sp -- docker容器内尝试玩airflow

最近因为涉及到要重新对某处搭建简单数据中心,从而接触到airflow,了解airflow: http://airflow.apache.org/

环境:docker下centos+mysql8+python3.7 ,对应上面docker篇4的结尾的容器中。

相关走法参考这里: https://mp.weixin.qq.com/s/xPjXMc_6ssHt16J07BC7jA?

首先pip安装airflow,我的python3.7对应pip3:  pip3 install apache-airflow  ; 但是遇到问题

那就如它所说增加这个环境变量:   export SLUGIFY_USES_TEXT_UNIDECODE=yes ; 后再执行上面的pip。安装一大堆依赖之后成功安装airflow。

接下来:airflow initdb ,但是bash: airflow: command not found; 鉴于airflow在python的bin下面,于是:vi /etc/profile ;结尾添加一行export PATH=$PATH:/usr/local/python37/bin;之后source /etc/profile 。airflow命令即可直接运行了,再次:airflow initdb,但是出现:

搜索找到相关的问题: https://stackoverflow.com/questions/53733446/how-to-suppress-errors-in-airflow-cli-output 发现需要升级tenacity ,于是pip3 install -U tenacity,但是说airflow合适的tenacity还是4.8版本:

但是airflow initdb果然不报那个错了:

然后在容器内打开airflow的webserver : airflow webserver -p 8080;但此时容器和主机的端口映射还没打开,肯定是访问不通的,尝试给运行中的容器增加端口映射,参考: https://blog.csdn.net/u013043762/article/details/79578599 ;试了几波,但还是不行,果然还是对iptables那些还有点摸不着头脑啊,配的过程中添加无效,删除倒是可以把容器run时初始的那个映射成功关闭,非常奇怪。那就先不看webserver吧,等下airflow都配好走方法二,先配下airflow+mysql:

修改配置文件:vi ~/airflow/airflow.cfg;修改以下两块

executor 那块先不展开。mysql 那块一开始写的mysql://,它会默认调用MySQLdb,由于我暂时没装,No module named 'MySQLdb',装了pymysql并考虑sqlalchemy 的用法,改成mysql+pymysql,就启动ok了(不过这里在后面会采坑, 参照这里的No.1 ),随后报错需要先建库airflowdb;airflow不会帮你做按你的配置建库的事情,它不需要那么高的权限,一般是你建好一个库指定它进去就好了;数据库账号配置和建库内容这里不详细展示了,比较简单。airflow initdb成功之后它会添加以下表:

至此;准备打包docker镜像,是把scheduler和webserver都运行起来再打包呢,还是就现在打包,没想的很明白,从节省镜像空间的角度看的话,也一直在想为什么自己镜像那么大,可能是完全当成虚机在玩了,什么都想放上去,现在是centos+python3+一堆python模块+mysql8+airflow,上面完整版的airflow又是一堆大大小小的包。

ps: 其实上面的 example_dags 那些应该是可以不用去跑的,虽然写文章这两天开了一会儿可能有跑跑 example_dags的吧 ,不过看下了下 ~/airflow/ 下面的日志啥的也不是特别多,那就先这么去打包镜像吧:

[root@小林のCentos 09:39:49 ~]>149$ docker commit -m="v1.5 v1.4_r+airflow with mysql&initdb" -a antony a73a16aa0a61 antony314/centos:v1.5           
sha256:2286a16d75a6d7f9f736e25de8fc87f3b079abd265b3af7a768a5ac144be3c3c
[root@小林のCentos 10:41:15 ~]>150$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
antony314/centos    v1.5                2286a16d75a6        37 seconds ago      4.3GB
antony314/centos    v1.4_r              501253e4ee04        3 days ago          3.98GB

多了400M,相对于安装了mysql的增长,就还好啦。

接下来上传到docker hub,还好,似乎没有变大:

然后我们到另外一台服务器上部署下v1.5的环境试试咯,顺便尝试解决上面的访问问题,现在需要在启动容器的时候至少配置两个端口映射,分别给mysql和airflow的webserver使用,直接run最近的镜像,docker会去拉对应的新版本镜像:

docker run  -tdi --privileged -p 3306:3306 -p 3308:8080 antony314/centos:v1.5 init  

由于暂时找运维小哥只开通了3306和3308,于是用主机的3308映射到容器的8080准备给webserver用,端口映射确实有俩:

至此,此机器的数据库可以完成远程访问,并包含airflowdb和初始化的所有表,图这里就不截了。

尝试访问webserver,因为容器内还没打开airflow webserver,在其他机器上发现,docker并没有把/etc/profile文件带过来,可能得放在用户配置~/.bashrc好点吧,于是又 vi ~/.bashrc ,加上以下三行:

TZ='Asia/Shanghai'; export TZ
export AIRFLOW_HOME=/root/airflow
export PATH=$PATH:/usr/local/python37/bin

之后运行:airflow webserver  默认是8080端口: airflow webserver > /dev/airflow_weblog 2>&1 &

由于刚刚已经做好了映射,所以已经可以访问了:

后面实际开始使用airflow的时候,会专门写些关于airflow的文章。

最后,重新push一个镜像吧(包括看改动的bashrc能不能生效以及启动着的airflow webserver),因为在另一台机器,不登录docker的账户是没法push上去的:

docker ps
docker commit -m 'v1.5_rw with runing airflow webserver' -a antony 114ea1a81ea6 antony314/centos:v1.5_rw
docker push antony314/centos:v1.5_rw
docker login 
docker push antony314/centos:v1.5_rw

docker hub地址: https://cloud.docker.com/repository/docker/antony314/centos/tags

docker的一阶段小结:

1.docker的基本流程和主要命令都走通了,更多的是把docker当一个虚拟机在用了;

2.容器的外网访问问题,其实docker本身有很多方法,但这里只走了端口映射这一种,因为对iptables部署,还只通了这下面的一种方式就是在run时配好映射;

3.docker有些相对高级的用法还没接触到,Makefile配置法,相关运行命令的配置等,甚至还有些不太知道的,都还没涉及。

应该暂时会停在这个阶段了,然后之前留的问题和后续使用发现的trick,如无特殊的必要,我会直接更新到相应的内容上。

最后,给自己记录几个过程中的命令:

airflow scheduler

airflow webserver > /dev/null 2>&1 &

ps auxf | grep airflow | awk '{print $2}' | xargs kill -9

目录docker 入门到放弃1----安装、注册、使用并上传自定义镜像 docker 入门到放弃2----拉取镜像,安装常用环境并上传 docker 入门到放弃3-- docker安装mysql8.0并启动 docker 入门到放弃4-- docker容器内启动配置mysql8.0,完成外部访问 docker 入门到放弃4.sp -- docker容器内尝试玩airflow 最...
1. 安装python-pip[root@node1 ~]# yum install -y python-pip2. 安装 airflow [root@node1 ~]# pip install airflow 如果上面命令安装较慢,可以使用下面命令国内源安装。[root@node1 ~]# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
在之前的文章中 我们已经了解了 airflow 和 它的工作原理。 hadoop组件— sp ark实战----- airflow ----调度工具 airflow 的介绍和使用示例 Scheduler进程,WebServer进程和Worker进程需要单独启动。Scheduler和WebServer可以跑在一个操作系统内,也可以分开,而通常Worker需要很多,如果是部署特定的数量的Worker,那就需要特定数...
命令行报bash:…:command not found的解决办法(几乎所有命令) 命令行输入命令执行后报“bash:…:command not found”这是由于系统PATH设置问题,PATH没有设置对,系统就无法找到精确命令了。 1、在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin 这样可以保证命令行命令暂时可以使用。命令执行完之后先不要关闭...
(2021) [root@hadoop001 airflow ]# airflow db init Traceback (most recent call last): File "/root/.virtualenvsi/2021/bin/ airflow ", line 5, in <module> from airflow .__main__ import main File "/root/.virtualenvsi/2021/lib/python3.9/site-packages/
相信很多data工程师都或多或少接触过 Airflow airflow 是apache基金会的开源项目,能白嫖为啥不用是吧!! 官网:https:// airflow .apache.org/ 目的:很多小伙伴在 airflow 安装的时候遇到了pip的一些问题,很烦是吧,所以废话不多说, docker 安装,直接撸他 环境介绍:Centos 7.5 Airflow 官网教程在这里 https:// airflow .apache.org/docs/apache- airflow /stable/start/ docker .html
错误信息:bunzip2: command not found[/root/anaconda2] >>> PREFIX=/root/anaconda2 Anaconda2-5.0.0-Linux-ppc64le.sh: line 317: bunzip2: command not found tar: This does not look like a tar archive tar: Exiti
# airflow needs a home, ~/ airflow is the default, # but you can lay foundation somewhere else if you prefer # (optional) export AIRFLOW _HOME=~/ airflow # install from pypi using pip pip3...
文章目录 airflow docker 中的安装与使用简介 airflow 镜像环境变量配置信息dag sp ip 包的安装挂载目录部署 airflow .cfg 配置文件修改示例加载邮件时区登录配置其他配置信息目录结构与文件.env Docker file docker -compose.yaml启动查看 dags 信息扩展钉钉机器人报警邮箱报警异常出现AttributeError: module ‘typing‘ has no attribute ‘_ClassVar‘错误 airflow .cfg airflow 在 d
### 回答1: docker -ce_18.06.3.ce-1_mips64el.deb是适用于mips64el架构的 Docker Community Edition(CE)的安装包。 Docker CE是一个开源的 容器 化平台,它可以让开发人员通过把应用程序和其所需的运行时环境打包到 容器 中来轻松地构建、发布和运行应用程序。 这个安装包是 docker -ce的一个特定版本,版本号为18.06.3.ce-1。这意味着它是 Docker CE的18.06.3版本的一个修订版,其中的“ce”表示这是一个社区版(Community Edition)。 mips64el是一个处理器架构,特别适用于嵌入式系统和网络设备。因此,这个安装包是专门为mips64el架构的系统设计的,以便在此类设备上安装和运行 Docker CE。 要安装这个deb安装包,可以使用dpkg命令。首先,将.deb文件下载到系统中,然后在终端中导航到该文件所在的目录,并运行以下命令: ```bash sudo dpkg -i docker -ce_18.06.3.ce-1_mips64el.deb 此命令将安装 docker -ce版本18.06.3.ce-1,并在系统上启用 Docker CE。 总之, docker -ce_18.06.3.ce-1_mips64el.deb是一个特定于mips64el架构的 Docker CE安装包,可以用于在mips64el系统上安装和运行 Docker 容器 。 ### 回答2: docker -ce_18.06.3.ce-1_mips64el.deb是一个 Docker 容器 引擎的软件包。 Docker 是一个开源的 容器 化平台,通过将应用程序和其依赖项打包成一个独立的 容器 ,可以实现快速、可靠和可移植的应用程序交付。 这个软件包中的CE代表Community Edition,即社区版,是免费的版本,通常适用于个人用户和小型企业。18.06.3.ce-1是软件的版本号,表示这是 Docker 的第18.06.3.ce-1版。mips64el是MIPS 64位架构的指令集,.deb则是Debian软件包的扩展名,适用于Debian及基于Debian的Linux发行版。 安装这个软件包可以让用户在MIPS 64位架构的计算机上使用 Docker 容器 引擎。在安装之后,用户可以使用 Docker 命令行工具创建、分享和运行 容器 Docker 容器 化技术可以提供更高效的资源利用率和更好的开发环境一致性,同时提供了快速部署和水平扩展的优势。 使用 Docker 可以加快软件开发和部署的速度,减少不同环境之间的兼容性问题,并提供了更好的应用程序隔离性和安全性。因此,对于需要部署和管理 容器 化应用程序的用户来说,安装 docker -ce_18.06.3.ce-1_mips64el.deb软件包是非常有益的。 ### 回答3: docker -ce_18.06.3.ce-1_mips64el.deb是 Docker 社区版本18.06.3的一个deb软件包,适用于MIPS64架构的Little Endian(mips64el)。 Docker 是一种开源的 容器 化平台,可以帮助用户快速构建、测试和部署应用程序。它通过将应用程序和其依赖项封装在一个独立的 容器 中,提供了一种轻量级、可移植和可扩展的解决方案。 这个软件包可以帮助用户在MIPS64架构的系统上安装和运行 Docker 环境。用户可以使用 Docker 命令在该系统上创建和管理 容器 容器 可以在不同的环境中移植,因为它们封装了应用程序的全部依赖项,包括操作系统和库文件。 使用 Docker 可以带来很多好处。首先,它使开发人员可以快速创建和销毁应用程序的实例,节省了开发和测试的时间。其次, 容器 化使得应用程序更加轻量级,能够更快地启动和停止。此外, 容器 还能够保持应用程序的环境整洁,避免了依赖冲突和版本问题。 对于需要在MIPS64架构的系统上运行 Docker 的用户来说, docker -ce_18.06.3.ce-1_mips64el.deb是一个必备的软件包。通过安装该软件包,用户可以享受到 Docker 提供的高效、便捷和可移植的 容器 化解决方案。
博主您好,请问 "开启--enable-shared后会报 找不到so的错误 解决如下: echo "/usr/local/python374/lib/" >> /etc/ld.so.conf ldconfig " 是在什么时候添加这行指令? 在 ./configure 后 还在在 make 后 python3 找出两个字符串的所有公共子串 帅气的Antony kay535: 确实少贴了代码,我修改下