Docker学习笔记之 一、helloword

1.1 介绍概念

Docker:

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

  • Docker通常用于如下场景:
    • web应用的自动化打包和发布;
    • 自动化测试和持续集成、发布;
    • 在服务型环境中部署和调整数据库或其他的后台应用;
    • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

镜像:

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS。在Docker镜像的最底层是bootfs。这一层与典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。Docker在bootfs之上的一层是rootfs(根文件系统)。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

容器:

Docker的容器(container)其实就是一个进程的容器,而并不是一个全虚拟化的操作系统,所以他不会有什么init进程。docker将进程、进程所需要的操作系统、运行环境称为容器。所以它比传统的基于hypervisor的虚拟机拥有更高的效率,并使用更低的资源。它实际上是一个内核级别的虚拟化技术,容器还是在使用宿主机的内核。

仓库:

就是一个存储和共享镜像文件的地方。

1.2 不同操作系统上安装

  1. mac上

  2. centos上

  3. windows上

1.3 运行helloword

1.3.1 先搜索一个容器search

$ docker search nginx

搜索一个叫nginx的容器

1.3.2 下载这个容器pull

$ docker pull nginx

下载一个叫nginx的容器到本地。

1.3.3 运行一个容器出来run

a. 一次运行nginx这个容器,并查看nginx的版本号:

$ docker run nginx nginx -v
1.3.3-a.png

b. 后台运行nginx这个容器,并绑定端口号:

$ docker run --name nginx-hello -d -p 88:80 nginx
  • 这里我们命名新的服务叫nginx-hello,并且映射到88端口,
  • -d 代表后台运行容器,并返回容器ID;
  • -p 传入绑定参数
1.3.3-b.png
1.3.3-c.png

1.3.4 修改运行的容器数据

a.首先查看一下正在运行的容器

$ docker ps

可以看见正在运行的容器列表:

1.3.4-a.png

b.修改正在运行的这个nginx-hello的欢迎页面
首先以交互式终端方式进入nginx-hello, 并执行bash获取一个可操作的shell:

$ docker exec -it nginx-hello bash
$ echo 'hello docker nginx 88' > /usr/share/nginx/html/index.html
  • 这里-it这是两个参数,-i表示交互式操作,-t表示终端。
  • bash放在镜像名字后面是命令,我们运行一个交互式shell。然后使用echo命令,修改nginx的index.html页面的内容:
1.3.4-b.png

1.3.4-c.png

1.3.5 保存这个容器为镜像

我们把nginx的容器修改成了一个版本叫nginx-hello,可以查看他的变动信息:

$ docker diff nginx-hello
1.3.5-a.png

现在把这个修改后进行保存

$ docker commit [这里是id] [这里是保存的名字]
1.3.5-b.png

查看本地的镜像

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

推荐阅读更多精彩内容

  • 1. Docker是什么? Docker是一个用来装应用的容器,就好比用书包来装书,用水杯来装水,你可以把你想到的...
    ce5154e79490阅读 4,278评论 0 0
  • Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启...
    执笔梦一场阅读 8,642评论 2 10
  • docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基...
    JAVA日知录阅读 3,868评论 0 4
  • 特别说明: 本人平时混迹于 B 站,不咋回复这里的评论,有问题可以到 B 站视频评论区留言找我视频地址: http...
    撸帝阅读 4,438评论 1 3
  • 持久化 RDB 快照 全量 在服务线上请求的同时,Redis还需要进行内存快照,内存快照要求Redis必须进行文件...
    zhangsanzhu阅读 2,844评论 0 0