Docker基础总结

  • Docker

    常用命令

    docker verision --> 版本

    docker ps —> 查看当前容器

    docker ps -a —> 查看所有容器

    docker images —> 查看当前所有镜像

    docker search nginx —> 搜索可用的 docker 镜像

    docker pull nginx —> 下载镜像容器

    docker run nginx echo "hello world" —>在docker容器中运行"hello world"

    • docker run 命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。

    docker run learn/tutorial apt-get install -y ping

    • 基于 ubuntu 的镜像可以使用 apt-get 的命令来安装

    docker commit —> 保存对容器的修改

    docker run learn/ping ping www.baidu.com

    docker inspect id 查看运行中镜像的详细状态

    docker login —> 登录

    docker push yourname/imagesname —> 提交镜像到自己的 Docker Hub

    docker run -p 80:80 name/imagesname —>通过 -p 参数对外指定 80 端口

    Dockerfile

    FROM ubuntu:14.04   // 指定镜像基于ubuntu 14.04构建
    MAINTAINER saymagic saymagic@163.com   // 创建镜像的用户
    RUN apt-get update    // shell
    RUN apt-get install -y nginx
    COPY ./www /usr/share/nginx/html // copy
    EXPOSE 80 // 暴露80端口
    CMD ["nginx", "-g", "daemon off;"] // 运行容器时开启nginx
    

    http://www.docker.org.cn/dockerppt/114.html

    Docker网络配置

    Dokcer 通过使用 Linux 桥接提供容器之间的通信,docker0 桥接接口的目的就是方便 Docker 管理。

    • creates the docker0 bridge if not present
      • # 如果 docker0 不存在则创建
    • searches for an IP address range which doesn’t overlap with an existing route
      • # 搜索一个与当前路由不冲突的 ip 段
    • picks an IP in the selected range
      • # 在确定的范围中选择 ip
    • assigns this IP to the docker0 bridge
      • # 绑定 ip 到 docker0

    Docker 默认有四种网络模式

    • host 模式,使用 --net=host 指定。

      • 如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
      • 容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
    • container 模式,使用 --net=container:NAMEorID 指定。

      • 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。
    • none 模式,使用 --net=none 指定。

      • 这个模式和前两个不同。在这种模式下,Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。
    • bridge 模式,使用 --net=bridge 指定,默认设置。

      • bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。

      • 当 Docker server 启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。

      • 接下来就要为容器分配 IP 了,Docker 会从 RFC1918 所定义的私有 IP 网段中,选择一个和宿主机不同的IP地址和子网分配给 docker0,连接到 docker0 的容器就从这个子网中选择一个未占用的 IP 使用。如一般 Docker 会使用 172.17.0.0/16 这个网段,并将 172.17.42.1/16 分配给 docker0 网桥

        (在主机上使用 ifconfig 命令是可以看到 docker0 的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,554评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,806评论 0 7
  • Docker简介1 什么是Docker2 为什么使用Docker3 Docker的安装与启动及常用命令4 Dock...
    lucus_guo阅读 379评论 0 0
  • 很多人可能在项目中已经使用docker很长时间,但是却很少有人知道docker的网络是如何实现的。我应该就算是很多...
    水雨田阅读 1,164评论 0 3
  • 找不到对象仅仅是因为长得丑吗?找不到对象仅仅是因为穷吗?找不到对象仅仅是因为蠢吗? 《学会提问》的第九章告诉我们:...
    阿不快跑阅读 431评论 0 0