docker学习笔记(二)

来源:互联网 发布:淘宝账号解封成功案例 编辑:程序博客网 时间:2024/06/01 10:19

一.高级网络配置:

1.配置DNS: Docker 没有为每个容器专门定制镜像,它利用虚拟文件来挂载到容器的相关配置文件

使用mount 可以看到挂载信息

可以手动指定容器的配置

2.容器访问控制: 容器的访问控制主要通过Linux上的iptable防火墙进行管理和实现

  容器访问外部网络:  先检查网络转发是否打开。

>sysctl net.ipv4.ip_forward

("1"代表打开,“0”代表关闭,需要手动配置开启,在启动docker时设定 --ip_forward = true

  容器之间访问: 需要两方面的支持,一方面是网络拓扑结构是否已经互联,二是本地系统的防火墙软件-iptables是否允许通过


二.安全介绍

1.内核名字空间: 当用docker run 启动一个容器时,在后台Docker 为容器创建了一个独立的名字空间和控制集合。容器都有自己底油的网络栈,这就意味着它们不能访问其他容器的socket或者接口,当指定公共端口或者使用Links来连接2个容器时,容器就可以相互通信了

2.控制组: 负责实现资源的审计和限制

3.docker 服务端的防护

  将容器的root 用户映射到本地主机上的非root用户,减轻容器和主机之间因权限提升而引起的安全问题

  允许Docker 服务器端在非root权限下允许安全可靠的子进程来代理执行需要特权权限的操作

4.内核能力机制: 是Linux内核一个强大的特性,可以提供细粒度的权限访问控制


三.Dockerfile

1.基本结构: 由一行行命令语句组成,并且以“#”标识注释行

2.dockerfile主要有四个部分: 基础镜像信息; 维护者信息; 镜像操作指令; 容器启动时执行指令

3. 指令:

  FROM指令: FROM <image> or FROM <image>:<tag>

   第一条指令必须为FROM ,标明基础镜像信息,并且在dockerfile中创建多个镜像时使用多个FROM

  MAINTAINER指令:  MAINTAINER <name> 

   标明维护者信息

  RUN指令: RUN <command>

   每条RUN指令会在当前镜像基础上执行,并且提交为新的镜像,当命令行太长时,使用“\”(右斜杠)来表示换行

  CMD指令:

   指定启动容器时执行的命令,每个dockerfile只能有一条CMD命令,有多条的话会只执行最后一条

  EXPOSE指令: EXPOSE <port>

   告诉docker服务器暴露的端口号,供互联网系统使用

  ENV指令: ENV <key> <value>

   指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持

  ADD指令: ADD <src> <dest>

   将复制指定的<src>到容器中的<dest>

  COPY指令: COPY <src> <dest>

   复制本地主机的<src> 到容器中<dest>

  ENTRYPOINT指令:

   配置容器启动后执行的命令并不被docker run 提供的参数覆盖。每个dockerfile文件中只能有一个ENTRYPOINT指令,若有多条那么只执行最后一条

  VOLUME指令: VOLUME ['/data']

   创建一个可以从本地主机或其他的容器挂载的挂载点,一般用来存放数据库和需要保持的数据库

  USER指令: USER deamon

   指定运行容器时的用户名或UID

  WORKDIR指令: WORKDIR /path/to/workdir

    为后面的RUN,CMD,ENTRYPOINT指定配置工作目录

  例子:

       WORKDIR /a   #绝对路径

      WORKDIR b    #相对路径

      RUN pwd  

    执行结果为: /a/b

  ONBUILD 指令:

   配置当前所创建的镜像作为其他新创建镜像的基础镜像

3.创建镜像

  指令为: docker bulid -t [选项] 路径


这是在网上找到一个教程案例,我跟着代码敲执行的结果:

创建一个空目录 test_nginx

然后创建两个文件,一个是Dockerfile,一个是nginx.repo文件


>vim Dockerfile


>vim nginx.repo



创建镜像 docker build -t ***


查看已经创建的镜像


绑定端口,并查看绑定情况

通过浏览器访问


成功!

原创粉丝点击