一丶Docker简介
什么是Docker?
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
为什么要使用Docker
1、更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2、更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
Docker vs VM
虚拟化使得许多操作系统可同时在单个系统上运行。
容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
Docker的三个主要概念
-
Docker
image:镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。 -
Docker
container:容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。 -
Docker hub/registry:
共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
镜像就相当于打包好的版本,镜像启动之后运行在容器中,仓库就是装存储镜像的地方。
二丶安装使用Docker
Docker支持以下的CentOS版本
- CentOS 7 (64-bit)
- CentOS 6.5 (64-bit) 或更高的版本
CentOS7支持使用yum安装
~]# yum -y install docker
~]# systemctl start docker
# centos7使用systemctl 替代service 管理服务。
systemctl start docker #启动
systemctl restart docker #重启
systemctl stop docker #停止
systemctl status docker #查看状态
systemctl enable docker #自启动
systemctl disable docker #禁止自启动
镜像与容器常用指令
~]# docker search centos //搜索官方仓库镜像
~]# docker pull index.tenxcloud.com/tenxcloud/httpd //拉第三方镜像方法
~]# docker pull docker.io/busybox //下载镜像
~]# docker image save centos > docker-centos.tar.gz //导出镜像
~]# docker push docker.io/busybox // 上传镜像
~]# docker rmi docker.io/nginx //删除镜像
~]# docker image load -i docker-centos.tar.gz // 导入镜像
启动后进入容器的方法
~]# docker attach 1bf0f43c4d2f] //退出后停止容器
~]# docker exec -it clsn1 /bin/bash //退出后不停止容器 , 推荐使用
启动时进行端口映射
~]# docker run -d -p 8888:80 nginx:latest
-p hostPort:containerPort //端口映射 -p 8080:80
-p ip:hostPort:containerPort //配置监听地址 -p 10.0.0.100:8080:80
-p ip::containerPort //随机分配端口 -p 10.0.0.100::80
-p hostPort:containerPort:udp //指定协议 -p 8080:80:tcp
-p 81:80 –p 443:443 //指定多个
Docker 数据卷的管理
~]# docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest //挂载时创建卷
~]# docker run -d -p 8080:80 -v /data:/usr/share/nginx/html nginx:latest
//设置共享卷,使用同一个卷启动一个新的容器
三丶Dockerfile自动构建docker镜像
官方构建dockerffile文件参考
https://github.com/CentOS/CentOS-Dockerfiles
创建第一个Dockerfile文件
]# vim Dockerfile
FROM centos:6.8
RUN yum install openssh-server -y
RUN echo "root:123456" |chpasswd
RUN /etc/init.d/sshd start
CMD ["/usr/sbin/sshd","-D"]
构建docker镜像
~]# docker image build -t centos6.8-ssh .
-t 为镜像标签打标签 . 表示当前路径