Docker

作者: 初漾流影 | 来源:发表于2018-12-03 00:06 被阅读0次

    Docker镜像

    镜像是基于联合文件系统的一种层式的结构,由一系列指令一步一步构建出来。用户基于镜像来运行自己的容器。
    镜像是Docker生命周期中的构建或打包阶段。
    一个镜像可以有多个标签。

    Docker容器

    容器是基于镜像启动起来的,容器中可以运行一个或多个进程。
    容器是启动或执行阶段。
    一个容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。

    Docker常用命令

    docker run -p 80:80 --name 容器名 -it 容器镜像:基于xx镜像启动一个容器 ,以交互的方式启动。-p参数将容器的80端口绑定到主机的80端口上。
    docker ps: 列出所有运行中的容器
    docker ps -a: 列出所有的容器
    docker exec -it 容器名 bash: 在容器内运行交互命令
    docker logs -f 容器名:跟踪容器的日志
    docker rm -f 容器名 :删除运行中的Docker容器
    docker rm docker ps -a -q : 删除所有的容器
    docker images: 列出所有的镜像
    docker login: 登录到Docker Hub
    docker build --no-cache -t="xx/xx" . :忽略Dockerfile的构建缓存
    docker history 镜像名:可看到构建镜像的每一层,以及创建这些层的Dockerfile指令。

    构建镜像

    一般基于一个已有的基础镜像来构建新镜像。推荐使用Dockerfile构建镜像,Dockerfile由一系列指令和参数组成。每条指令,如FROM,都必须为大写字母,且后面要跟随一个参数FROM ubuntu:14.04。RUN指令用来运行一条指令。
    Dockerfile中的指令会按顺序从上到下执行,每条指令都会创建一个新的镜像层并对镜像进行提交。

    Docker大体上按照如下流程执行Dockerfile中的指令

    • Docker从基础镜像运行一个容器
    • 执行一条指令,对容器做出修改
    • 执行类似docker commit的操作,提交一个新的镜像层
    • Docker再基于刚提交的镜像运行一个新容器
    • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕

    如果用户的Dockerfile由于某些原因(如某条指令失败了)没有正常结束,那么用户将得到一个可以使用的镜像,方便调试。
    使用docker build命令来构建镜像,Dockerfile中的所有指令都会被执行并且提交,并且在该命令成功后返回一个新镜像。

    写Dockerfile好的实践

    • 创建短暂的container
      短暂意味着container可以被停止和摧毁,用很小的构建和配置代价来重建和替换。
    • 理解构建上下文

    相关文章

      网友评论

          本文标题:Docker

          本文链接:https://www.haomeiwen.com/subject/gkgjcqtx.html