docker基础 --- 镜像篇

2017-02-09  本文已影响0人  梦想做小猿

说明

镜像是Docker的三大组件之一,docker运行容器前需要本地存在对应镜像,如果本地没有镜像,docker会从镜像仓库下载(默认是Docker Hub公共服务器中的仓库)

基础操作

使用Dockerfile定制镜像

docker的镜像是以分层的形式工作的,定制镜像就是定制每一层所添加的配置、 文件。我们可以把每一层的修改、安装、构建、操作的命令都写入一个脚本,用这 个脚本来构建镜像,这个脚本就是Dockerfile

以nginx镜像为例,定制ngixn默认首页

[root@localhost ~]# mkdir mynginx && cd mynginx && touch Dockerfile
[root@localhost ~]# vim Dockerfile
FROM nginx
RUN echo '<h1>Hello Docker</h1>' > /usr/share/nginx/html/index.html

Dockerfile主要由FROM和RUN组成

Dockerfile 中每一个指令都会建立一层,如果有多个RUN会建立多层,会产生非常臃肿、非常多层的镜像,容易出错,效率低,且docker对层有限制,Union FS限制不能超过127层。所以Dockerfile应将命令写成一行,使用一个RUN

[root@localhost ~]# mkdir mynginx && cd mynginx && touch Dockerfile
[root@localhost ~]# vim Dockerfile
FROM centos
RUN yum install epel-release \
    && yum install nginx \
    && echo '<h1>Hello Docker</h1>' > /usr/share/nginx/html/index.html
CMD ["nginx","-g","daemon off;"]
[root@localhost ~]# docker build -t nginx_v3 .

以上Dockerfile将多条命令写到一个RUN中,减少了创建层的个数。如果Dockerfile中有编译安装软件,最后要将下载的源码包删掉,以避免镜像太臃肿。CMD为启动该容器的时候自动运行的命令后续文章会仔细解释

使用git repo构建镜像

[root@localhost ~]# docker build https://github.com/xxxx/xxxx.git

使用tar包构建镜像

[root@localhost ~]# docker build http://server/xxxx.tar.gz

从标准输入构建

[root@localhost ~]# docker build - < Dockerfile
[root@localhost ~]# cat Dockerfile | docker build -

从标准输入读取压缩包构建

[root@localhost ~]# docker build - < xxx.tar.gz
上一篇 下一篇

猜你喜欢

热点阅读