起因
今天在 CentOS 7
上编译 docker 镜像,Dockerfile 里面有这样两行
FROM postgres:10.7 AS cube-builder
...
FROM postgres:10.7
COPY --from=cube-builder /usr/lib/postgresql/10/lib/cube.so /usr/lib/postgresql/10/lib/
使用 docker build
编译时,出现 FROM AS
不正确,COPY unknown flag --from
这样的错误。查了官方的文档,有这两个选项。
Optionally
COPY
accepts a flag--from=<name|index>
that can be used to set the source location to a previous build stage (created withFROM .. AS <name>
) that will be used instead of a build context sent by the user.
再查一些资料,发现是 docker
版本过低,没有这个选项。好吧,升级 docker...
CentOS 7 升级 docker
CentOS 7 默认源安装的 docker 版本是 1.13.1
, 需要升级版本到 ce
版本。
卸载老版本的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 docker ce
官方提供多种方法安装 ce 版本 docker,我们通过 yum 仓库的方式安装 docker ce。(P.S 官方文档写的比较详细,可以点击查看)
- 安装依赖的工具包和存储驱动
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 配置 docker ce yum仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装
sudo yum install docker-ce
- 启动 docker,并查看安装的版本
sudo systemctl start docker
docker version
输出如下,说明安装成功.
Client:
Version: 18.09.5
API version: 1.39
Go version: go1.10.8
Git commit: e8ff056
Built: Thu Apr 11 04:43:34 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.5
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: e8ff056
Built: Thu Apr 11 04:13:40 2019
OS/Arch: linux/amd64
Experimental: false
docker ce, cs, ee 版本区别
StackOverflow 对 Docker CE
, Docker EE
, Dokcer CS
有一段简单的描述,说明其中的差异,大概意思如下:
- Docker CE (Community Edition) 是开源社区版本
- Docker EE (Enterprise Edition) 是被 docker 官方支持和认证的版本
- Docker CS (Commercially Supported) 是社区是吃的 Docker EE,版本是
versions <= 1.13
这篇一篇文章 ANNOUNCING DOCKER ENTERPRISE EDITION对 Docker CE
和 Docker EE
有更详细的介绍。EE
版有更强的功能和更好的支持,CE
版同样也会支持,发布版本周期也更频繁。
对于大多数开发者,使用 CE
版本的功能即可满足需求。
网友评论