zoukankan      html  css  js  c++  java
  • 《第一本docker书》第4章 使用docker镜像和仓库 读书笔记

    docker最底端是一个引导文件系统,即bootfs。

    第二层是root文件系统rootfs,位于引导文件系统之上。

    在传统的Linux引导过程中,root文件系统会最先以只读的方式加载,当引导结束并完成了完整性检查之后,它才会被切换为读写模式。但是在docker里,root文件系统永远只能是只读状态,并且docker利用联合加载技术又会在root文件系统层上加载更多的只读文件系统。联合加载指的是一次同时加载多个文件系统,但是在外面看起来只能看到一个文件系统。联合加载将各层文件系统叠加到一起,这样最终文件系统会包含所有底层的文件和目录。

    docker将这样的文件系统成为镜像。一个镜像可以放到另一个镜像的顶部。位于下面的镜像成为父镜像,最底部的叫做基础镜像。

    当docker第一次启动一个容器时,初始的读写层是空的。当文件系统变化时,这些变化都会引用到这一层上。比如,如果想修改一个文件,这个文件会从该读写层下面的只读层复制到读写层。该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏。这种机制被成为写时复制。

    docker images #查看所有的docker镜像
    

    本地镜像都保存在/var/lib/docker下,所有的容器都保存在/var/lib/docker/containers

    docker pull ubuntu #拉去镜像
    docker run -it --name 容器名称 ubuntu:12.04 /bin/bash #可以给镜像加上版本
    

    镜像分用户镜像和顶层镜像。

    docker images fedora #查看指定的镜像列表
    docker search puppet #查找指定的镜像
    

      

    构建镜像

    docker login #登录(国内访问docker hub好慢啊)
    docker commit 本地容器ID 用户名/容器名 #提交
    

    commit 还可以附带一些别的参数。

    这本书里并不推荐使用docker commit的方法构建镜像。

    使用Dockerfile

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

    • Docker 从镜像运行一个容器。
    • 执行一条指令,对容器做出修改。
    • 执行类似docker commit 的操作,提交一个新的镜像层。
    • Docker再基于刚提交的镜像运行一个新容器
    • 执行Dockerfile的下一条指令,知道所有的指令都执行完毕。
    docker build -t="用户名/镜像名" #基于Dockerfile构建容器
    

    也可以通过git仓库源地址指定Dockerfile的位置。

    如果构建出错,可以通过docker run 命令来基于这次构建到目前为止已经成功的最后一步创建一个容器。

    --no-cache 避免使用缓存

    docker history 镜像ID #获取镜像的构建历史
    

    Docker 可以在宿主机上随机选择一个49000-49900的一个比较大的端口号来映射到80端口上。

    可以通过docker port 容器ID 新的端口号 命令来设置端口映射

    也可以在运行docker run 时指定 -p 宿主端口:容器端口

    docker run -d -p 8080:80 --name static_web username/image 
    nginx -g "daemon off" #这一句不是太懂,对nginx不是太了解

    -p 也可以将端口绑定到特定的IP地址上,如 -p 127.0.0.1:8080:80

    -P 可以将容器中EXPOSE的端口全部公开

  • 相关阅读:
    Spring Cloud微服务安全实战_5-4_认证服务器使用spring session
    Spring Cloud微服务安全实战_5-3_基于session的SSO
    Spring Cloud微服务安全实战_5-2_实现授权码认证流程&实现SSO初步
    Spring Cloud微服务安全实战_5-1_单点登录基本架构
    Linux启动Spring boot项目命令
    Spring Cloud微服务安全实战_4-10_用spring-cloud-zuul-ratelimit做限流
    Spring Cloud微服务安全实战_4-9_用zuul网关解耦安全逻辑和业务逻辑
    Spring Cloud微服务安全实战_4-8_网关安全_01
    Spring Cloud微服务安全实战_4-7_token&client信息持久化到数据库
    几个好用Maven 镜像仓库地址
  • 原文地址:https://www.cnblogs.com/BaiGuodong/p/5562043.html
Copyright © 2011-2022 走看看