个人初步理解使用Docker应该尽量满足数据和应用隔离,数据尽量有mount在宿主机上;另外,与虚拟机相比,容器有一个很大的差异,它们被设计用来运行单进程,无法很好地模拟一个完整的环境,所以不建议一个容器塞太多的应用——容器的启动是非常廉价的。Docker设计者极力推崇“一个容器一个进程的方式”,所以遵循这样的应用原则就没错了。另外,docker exec是支持用户操作类似ssh这样的操作的,可以进入到docker内部,但是同样不推荐,这样的场景尽量限制在测试就好。
Docker安装
操作系统使用Centos7,查看官网安装方式(主要是获取相关的repo,否则直接使用yum install安装的版本不是最新的),如下
https://docs.docker.com/engine/installation/linux/centos/
vim /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
然后安装
yum install -y docker-engine
注意,安装完毕后,需要启动docker服务,systemctl start docker.service
(就是那艘蓝鲸大船),而后续运行的docker命令启动的只是docker container
(容器,即集装箱)。好的,这个设计很棒是不是,有点类似Java JVM和Java应用的关系,只要有JVM在,就可以忽略底层操作系统;docker同样满足这样的能力。
启动Airflow
首先,我们查看下github上面的docker-ai