Docker 基础学习

C/S架构:
        Docker Client: 发起docker相关的请求;
        Docker Server: 容器运行的节点;
        
核心组件:
        docker client:docker的客户端工具,是用户使用docker的主要接口,docker client与docker daemon通信并将结果返回给用户;
        docker deamon:运行于宿主机上,Docker守护进程,用户可通过docker client与其交互;
        image:镜像文件是只读的;用来创建container,一个镜像可以运行多个container;镜像文件可以通过Dockerfile文件创建,也可以从公共仓库docker hub/registry下载;
        repository
            公共仓库:Docker hub/registry
            私有仓库:docker registry
            
        docker container:docker的运行实例,容器是一个隔离环境;

Docker Images

About Docker Images
     Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器;
         采用分层构建机制,最底层为bootfs,其之为rootfs
             bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完 成后会被卸载以节约内存资源;
             rootfs:位于bootfs之上,表现为docker容器的根文件系统;
                 传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式, 完整性自检完成后将其重新挂载为读写模式; docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载 ”技术额外挂 载一个“可写”层。

Docker Image Layer
    位于下层的镜像称为父镜像(parent image),最底层的称为基础 镜像(base image) v 最上层为“可读写”层,其下的均为“只读”层。

Aufs
    advanced multi-layered unification filesystem:高级多层统一文件系统
    用于为Linux文件系统实现“联合挂载”
    aufs是之前的UnionFS的重新实现,2006年由Junjiro Okajima开发;
    Docker最初使用aufs作为容器文件系统层,它目前仍作为存储后端之 一来支持;
    aufs的竞争产品是overlayfs,后者自从3.18版本开始被合并到Linux内 核;
    docker的分层镜像,除了aufs,docker还支持btrfs, devicemapper和vfs 等
        在Ubuntu系统下,docker默认Ubuntu的 aufs;而在CentOS7上,用的是 devicemapper

Devicemapper
    Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备 映射机制,它为实现用于存储资源管理的块设备驱动提供了一 个高度模块化的内核架构
    在内核中它通过一个一个模块化的 target driver 插件实现对 IO 请求的过滤或者重新定向等工作,当前已经实现的 target driver 插件包括软 raid、软加密、逻辑卷条带、多路径、镜像、快照 等;

[root@node5 ~]# docker login -u wangjinhuai
Password: 
Login Succeeded
[root@node5 ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos/nginx      v0.1.0              3c6bc6ca3188        19 minutes ago      314 MB
docker.io/container/httpd   v0.1.0              7bfc3c50a470        31 minutes ago      305 MB
docker.io/centos            latest              1e1148e4cc2c        13 days ago         202 MB
docker.io/busybox           latest              59788edf1f3e        2 months ago        1.15 MB
[root@node5 ~]# docker tag docker.io/busybox:latest docker.io/wangjinhuai/busybox:v0.1.0
[root@node5 ~]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos/nginx          v0.1.0              3c6bc6ca3188        26 minutes ago      314 MB
docker.io/container/httpd       v0.1.0              7bfc3c50a470        37 minutes ago      305 MB
docker.io/centos                latest              1e1148e4cc2c        13 days ago         202 MB
docker.io/busybox               latest              59788edf1f3e        2 months ago        1.15 MB
docker.io/wangjinhuai/busybox   v0.1.0              59788edf1f3e        2 months ago        1.15 MB
[root@node5 ~]# docker push docker.io/wangjinhuai/busybox:v0.1.0
The push refers to a repository [docker.io/wangjinhuai/busybox]
8a788232037e: Mounted from library/busybox 
Head https://registry-1.docker.io/v2/wangjinhuai/busybox/blobs/sha256:59788edf1f3e78cd0ebe6ce1446e9d10788225db3dedcfd1a59f764bad2b2690: dial tcp 69.172.201.153:443: getsockopt: connection refused
[root@node5 ~]# docker push docker.io/wangjinhuai/busybox:v0.1.0
The push refers to a repository [docker.io/wangjinhuai/busybox]
8a788232037e: Layer already exists 
v0.1.0: digest: sha256:915f390a8912e16d4beb8689720a17348f3f6d1a7b659697df850ab625ea29d5 size: 527
[root@node5 ~]# docker pull docker.io/wangjinhuai/busybox:v0.1.0
[root@node5 ~]# docker images
[root@node5 ~]# docker run --name b1 -it docker.io/wangjinhuai/busybox:v0.1.0
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:06  
          inet addr:172.17.0.6  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:508 (508.0 B)  TX bytes:508 (508.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/ # mkdir /var/www/html
/ # vi /var/www/html/index.html

Test Server

/ # httpd -h /var/www/html/ / # netstat -tunl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 :::80 :::* LISTEN / # 客户端测试: [root@node5 ~]# curl http://172.17.0.6

Test Server

[root@node5 ~]# / # ps PID USER TIME COMMAND 1 root 0:00 sh 11 root 0:00 httpd -h /var/www/html/ 15 root 0:00 ps / # kill 11 / # ps PID USER TIME COMMAND 1 root 0:00 sh 16 root 0:00 ps

你可能感兴趣的:(服务器)