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
<h1>Test Server</h1>
/ # 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
<h1>Test Server</h1>
[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于零基础学习Docker,可以按照以下步骤进行: . 理解Docker的概念:Docker是一种容化技术,可以帮助开发人员将应用程序及其依赖项打包到一个可移植的容器中,并在不同的环境中运行。 2. 学习Docker的基本术语:了解Docker镜像、容器、仓库以及相关概念,这些是学习和使用Docker基础。 3. 安装Docker:根据你的操作系统,安装适合的Docker版本。Docker官方提供了详细的安装指南和文档,按照指引进行安装。 4. 学习Docker命令行工具:掌握基本的Docker命令行工具,如docker rundocker build等,这些命令将帮助你管理和操作Docker容器。 5. 学习使用Docker镜像:了解如何搜索、拉取和推送Docker镜像,以及如何使用Docker镜像创建和启动容器。 6. 创建自定义Docker镜像:学习使用Dockerfile编写自定义镜像的构建规范,并使用docker build命令构建镜像。 7. 理解Docker网络和存储:学习如何配置Docker容器的网络连接和存储卷,以便实现容器之间的通信和数据持久化。 8. 学习Docker Compose:Docker Compose是一个用于定义和运行多个容器的工具,学习使用它可以简化多容器应用的管理。 9. 实践项目:通过实际的应用案例来加深对Docker的理解和熟练度,例如部署一个简单的Web应用程序或者一个多容器的微服务架构。 10. 深入学习和扩展:学习更高级的Docker技术,如Docker Swarm、Kubernetes等,以及与其他工具和平台的集成。 需要注意的是,学习Docker需要一定的系统管理和命令行操作经验,可以通过阅读官方文档、参考书籍或在线教程来加深理解和提升技能。同时,不断实践和尝试是学习的关键,多写命令、构建镜像、运行容器,加深对Docker的理解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值