docker镜像操作

dockfile构建镜像示例

构建并运行一个简单的镜像文件

  • 1.下载基础镜像
    docker pull busybox:latest
    busybox的作用和功能

  • 2.编写Dockerfile

    1
    2
    3
    4
    #Description: httpd image
    FROM busybox:latest
    MAINTAINER "xxx"
    COPY index.html /data/web/html/

    注意点:
    COPY等指令 文件夹必须以/结尾
    FROM 镜像会自动下载
    docker run --name busybox --rm busybox cat /proc/version 查看镜像包含的linux系统版本

  • 3.构建镜像

    1
    docker build -t tinyhttpd:v0.1 ./
  • 4.运行

    1
    docker run --name tinyhttpd --rm tinyhttpd:v0.1 cat /data/web/html/index.html

    注意点:
    rm 删除新创建的tinyhttpd容器
    cat /data/web/html/index.html 命令(查看文件)

制作一个nginx镜像

  • 编写Dockerfile

    1
    2
    3
    4
    FROM busybox:latest
    MAINTAINER "lixl"
    ADD nginx-1.17.9.tar.gz /usr/local/src/
    EXPOSE 80/tcp

    把下载好的nginx源码添加到src目录
    docker build -t mynginx:v1 ./

    docker run –name mynginx –rm mynginx:v1 ls /usr/local/src/

1
2
3
4
5
6
FROM tinyhttpd:v0.1
LABEL maintainer="xxx"
ENV NGX_DOC_ROOT='/data/web/html/'
ADD entrypoint.sh /bin/
CMD ["/usr/sbin/nginx","-g","daemon off;"]
ENTRYPOINT ["/bin/entrypoint.sh"]
  • entrypoint.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/sh

    cat > /etc/nginx/conf.d/www.conf << EOF
    server{
    server_name ${HOSTNAME};
    listen ${IP:-0.0.0.0}:${PORT:-80};
    root ${NGX_DOC_ROOT:-/usr/share/nginx/html};
    }
    EOF

    exec "$@"

    给entrypoint.sh文件授权
    chmod +x entrypoint.sh

通过docker history查看镜像构建过程

1
2
3
4
5
6
7
8
查看构建过程
# docker history kubeguide/tomcat-app:v1

查看完整的CreatedBy信息
# docker history kubeguide/tomcat-app:v1 --no-trunc

自定义输出格式
# docker history kubeguide/tomcat-app:v1 --format "table {{.ID}}\t{{.CreatedBy}}" --no-trunc