Docker介绍:
(1)什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口;
由Docker客户端、Docker Daemon守护进程、Docker Image镜像、DockerContainer容器组成。
(2)Docker的应用场景
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
(3)传统虚拟机化与容器技术对比
docker的安装
1台7.3虚拟机和真机
保证虚拟机可以上网,网关设成真机ip,真机的ip_forward=1 防火墙地址伪装功能开启。
server1中用阿里云的yum源镜像,然后安装,docker-ce,(将CentOS7-Base.repo 和docker-ce.repo放到/etc/yum.repo下)
将CentOS7中的gpgcheck都改成0,docker-ce中不用改
yum repolist
yum install docker-ce -y
打开docker服务
也可以设置开机启动
在安装好docker后,系统会为docker容器分配一个ip,利用ip addr中查看docker0的ip
这个IP是为了容器通信用的
查看docker的版本信息
docker version
查看docker宿主机(server1)的信息
docker info
接下来要基于镜像运行容器
管理docker常用的基础命令
掌握这些命令是最基本的,然后才能操作docker
容器的运行是基于镜像的,这里我使用ubuntu的镜像来举例
docker load -i ubuntu.tar 导入镜像
docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板)
docker ps 查看容器状态
docker ps -a 查看容器状态(包括不活跃的容器)
docker attach vm1 连接容器
docker top vm1 查看容器进程
docker logs vm1 查看容器指令输出 -f 参数可以实时查看
docker inspect vm1 查看容器详情
docker stats vm1 查看容器资源使用率
docker diff vm1 查看容器修改
docker stop vm1 停止容器
docker start vm1 启动容器
docker kill vm1 强制干掉容器
docker restart vm1 重启容器
docker pause/unpause vm1 暂停/恢复容器
docker rm vm1 删除容器
镜像的导入和容器的使用
说白了也就是基于镜像拉起一个容器,其实真实的服务是封装在镜像中的,不过拉起一个容器就可以使用服务了
容器类似于一个虚拟机,基于镜像拉起一个容器,就相当于部署了一个服务,快速高效
注意:所有的镜像都可以到官网去下载,为了方便起见,直接使用我下载好的
接下来举几个例子
实例一:利用容器简单搭建一个2048小游戏
利用docker命令导入镜像game2048.tar docker load -i game2048.tar
查看镜像信息
docker images
创建容器vm1,并运行
有镜像才有容器,基于镜像把容器运行起来,容器是基于镜像的
docker run -d -p 80:80 --name vm1 game2048
上面命令的功能是创建一个名为vm1的容器,并将本机(server1宿主机)80端口映射到容器的80端口
通过本机80端口访问容器内部的80端口上运行的服务
运行容器并打入后台,这个容器是基于game2048这个镜像运行的
参数 | 功能 |
---|---|
-d | 打入后台 |
-p | 端口映射 |
- -name | 指定容器的名字 |
这里要提到docker的端口映射
我们使用以下命令可以看到在创建容器时有很多的参数,其中关于端口的参数有【-p】与【-P】
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射。
当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万)
当使用-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。
支持的格式有:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort
查看容器运行状态,看端口是否开启
docker ps
查看容器信息
docker inspect vm1
在真机浏览器访问server1的ip,前提是只要server1的80端口没有被占用,这样就可以通过server1访问容器vm1的80端口
输入server1的ip:172.25.15.1
可以看到2048的游戏就出来了
可以看出:通过运行容器,2048游戏就这样轻松上线,前提只要有镜像,拉起一个容器来应用就非常的简单
其实当我们执行完【docker run】命令以后就已经完成了上线,后续的操作也只是为了查看相关信息而已
这样看来,我们上线一个应用就只用了两步,非常方便,这也是为什么如今docker这么火爆的原因