zoukankan      html  css  js  c++  java
  • 系统学习Docker 践行DevOps理念-第3章 Docker的镜像和容器

    1.Docker的架构和底层技术

    1.Docker Platform

    2.Docker Engine

    3.Docker Architecture

    4.底层技术支持

    2. Docker Image概述

    1.什么是image

     2.查看本地image

    sudo docker image ls
    

     3.Image的获取

    Build from Dockerfile

    Pull from Registry

    3.DIY一个Base Image

    给vagrant用户sudo权限

    1.查看已有镜像

    docker image ls

     2.创建一个目录叫hello-world,进入目录,创建一个C语言的hello world程序,hello.c

    mkdir hello-world
    
    cd hello-world
    
    vim hello.c
    

    编辑hello.c

    #include <stdio.h>  
     
    void main()
    {
        printf("Hello Docker
    ");
    }
    

    3.下载gcc和glibc-static将hello.c编译成可执行文件hello程序

    gcc -static hello.c -o hello

     

     hello是可执行文件

     4.创建一个Dockerfile文件

    FROM scratch
    ADD hello /
    CMD ["/hello"]

     5.使用Dockerfile构建image

    docker build -t xiaopeng163/hello-world .

     6.查看分层

    docker history acca11e86101

     7.执行

    docker run xiaopeng163/hello-world

    4.初识Container

    1.什么是Container

    2.查看本地正在运行的容器

    docker container ls
    

    3.查看当前所有的容器,包括正在运行的以及退出的

    docker container ls -a

    4.交互式运行容器的方法

    docker run -it centos

    5.删除容器

    docker container rm 846b5efe98d4

    删除容器时容器ID可简写

    docker conatiner rm 89

     6.docker ps -a 等同于docker conatiner ls -a

    docker ps -a

     7.docker rm 等同于docker container rm

     8.docker images 等同于docker image ls

    docker images
    

     9.docker rmi 等同于 docker image rm 

    docker image rm 67759ccc6f1
    docker rmi f2a91732366c

    10.查看所有容器ID

     11.删除所有容器

    docker rm $(docker conatiner ls -aq)

     12.删除所有已退出的容器

    5.构建自己的Docker镜像

    1.基于一个已经存在的container创建一个image (不提倡使用此方式)

    docker commit xenodochial_pare xiaopeng163/centos-vim

    2.通用Dockerfile创建image

    mkdir docker-centos-vim
    cd docker-centos-vim

    创建一个Dockerfile

    FROM centos
    RUN yum install -y vim

    通过Dockerfile构建image

    docker build -t xiaopeng163/centos-vim-new .

     

    6.Dockerfile语法梳理及最佳实践

    官方文档:https://docs.docker.com/engine/reference/builder/

     1.FROM

    定制的镜像基于 FROM 的镜像

    尽量使用官方的image作为base image

    2.LABEL

    LABEL定义Metadata 版本、描述等等。

    3.RUN

    Run a command in a new container

    为了美观,复杂的RUN请用反斜线换行!避免无用分层,合并多条命令成一行!

    4.WORKDIR

    指定工作目录

    注意:我们要使用WORKDIR不要使用RUN cd。尽量使用绝对路径。

    5.ADD & COPY

    大部分情况,COPY优于ADD。ADD除了COPY还有额外功能(解压)!

    天津远程文件/目录请使用curl或者wget! 

    6.ENV

    ENV指令用以定义镜像的环境变量

    尽量使用ENV增加可维护性

    7.RUN vs CMD vs Entrypoint

     1.RUN&CMD&Entrypoint

    2.Shell和Exec格式

    小例子

    如何让上方的结果是hello Docker

    3.CMD

    4.ENTRYPOINT

    8.镜像的发布

    1.docker push前要先登录

    2.docker push

    发布完成后,可在个人的Docker hub中查看到此镜像

    3.另一种方式是docker hub与github做关联。

    4.使用私有仓库

    视频链接:https://pan.baidu.com/s/1JQpwDU-R8L-nfiydzQ5C-Q

    提取码:24v3

    9.Dockerfile实战

    app.py

    Dockerfile

     build

    后台执行 run -d

    10.容器的操作

    官方文档:https://docs.docker.com/engine/reference/commandline/cli/

    1.exec

    2.停止容器

    通过ID

    通过名字

    3.删除容器

    4.启动容器

    启动已关闭的容器

    5.docker inspect

    6.docker logs

    11.Dockerfile实战(2)

     

    12.容器的资源限制

     

  • 相关阅读:
    Redis网络连接库剖析
    如何下载和安装pywin32
    Python游戏开发入门:pygame事件处理机制
    python常见错误
    波特率与比特率
    __gcd最大公约数
    动态规划算法之矩阵连乘问题
    二分插入排序+二分搜索
    office 总结
    javaWeb总结
  • 原文地址:https://www.cnblogs.com/0bug/p/13881270.html
Copyright © 2011-2022 走看看