使用Docker镜像和仓库

Docker镜像

[什么是Docker镜像]

  1. 【Docker镜像】:用来启动容器的基石

  2. Docker镜像是由文件系统叠加而成的。

    2.1 最底端的是一个引导文件系统,即bootfs;

    2.2 第二层是root文件系统rootfs;rootfs可以是一种或多种操作系统;

    2.3 Docker利用联合加载技术会在root文件系统层上加载更多的只读文件系统;这样的文件系统会包含所有底层的文件和目录;

    2.4 Docker将这样的文件系统称为镜像;一个镜像镜像可以放在另一个镜像的顶部,位于下面的称为父镜像;位于最底部的镜像称为基础镜像

    2.5 当从一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统,而我们在Docker中运行的程序就是在这个读写层中执行的。

[镜像的管理]

  1. 【列出镜像】:sudo docker image ls

    注:为了区分同一个仓库中的不同镜像,Docker提供了标签(tag)功能。

  2. 【拉取镜像】:sudo docker pull

    例:[拉取带有标签的fedora镜像]: sudo docker pull fedora:21

  3. 【查找镜像】:sudo docker search

    例:[查找带有puppet的镜像]:sudo docker search puppet

[构建镜像]

构建方法

1. 使用docker commit命令;
2. 使用docker build命令和Dockerfile文件(**推荐**);

在Docker Hub官网上创建账号;登录到Docker Hub ###

用Dockerfile构建镜像

2.1 第一个Dockerfile

    mkdir work
    cd work
    mkdir static_web   //Docker将保存Dockerfile的目录称为上下文
    cd static_web
    touch Dockerfile
    vi Dockerfile

    注:  
        1. 每个Dockerfile的第一条指令必须是FROM;
        2. MAINTAINER指令:告诉Docker该镜像的作者是谁,以及电子邮件地址;
        3. 最后EXPOSE指令:告诉Docker该容器内的应用程序将会使用容器的指定端口。

2.2 基于Dockerfile构建新镜像

    运行Dockerfile:sudo docker build



        注:
            1. 其中"tpmamba/mamba:v1"即设置仓库为tpmamba,镜像名为mamba,标签为v1。
            2. 图中最后built后面则是新镜像的ID。
            3. 问:若在运行Dockerfile,指令失败该怎么办(如下图)?
               答:基于最后的成功步骤创建新容器,在这个容器中再次运行失败的指令,解决问题后再修改Dockerfile文件。

2.3 从新镜像启动一个容器:sudo docker run

    注:该条指令在启动时就将其绑定到特定的网络接口的随机端口。

2.4 查看端口

    1. sudo docker port
    2. sudo docker ps -l 

2.5 使用curl连接到容器

2.3 查看新镜像:sudo docker images xxxx

2.6 Dockerfile指令(12个)
    1. CMD   2. ENTRYPOINT  3. WORKDIR  4. ENV
    5. USER  6. VOLUME      7. ADD      8. COPY 
    9. LABEL 10. STOPSIGNAL 11. ARG     12. ONBUILD

将镜像推送到Docker Hub

sudo docker push xxxxx(前提是先登录的docker hub: sudo docker login)

    注: 若没有指定标签,则将其所有镜像推送到Docker Hub上

[自动构建]

[运行自己的Docker Registry]

你可能感兴趣的:(Docker)