第1章 简介
1.1 服务器简介
服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。
1.2 Docker简介
1.2.1 Docker
Docker时Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。
总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
1.2.2 Docker概念
Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。使用docker轻松部署应用程序。
集装箱化的优点:
· 灵活:即使是复杂的应用程序也可封装。
· 轻量级:容器利用并共享主机内核。
· 便携式:您可以在本地构建,部署到云上并在任何地方运行。
· 可扩展性:您可以增加和自动分发容器副本。
· 可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。
1.2.3 Images和容器
通过运行images启动容器,一个images是一个可执行的包,其中包括运行应用程序所需要的所有内容-代码,运行时,库、环境变量和配置文件。
容器时images运行时示例-当被执行时(即,images状态,或者用户进程)在内存中,可以使用命令查看正在运行容器的列表docker ps,就像在Linux中一样。
1.2.4 Docker产生的目的
环境管理复杂:从各种OS到各个中间件再到各种App,一款产品能够成功发布,作为开发者需要关心的东西太多,且难于管理,这个问题在软件兴业中普遍存在并需要直接面对。Docker可以简化部署多种应用实例工作,比如Web应用、后台应用、数据库应用、大数据应用比如Hadoop集群、消息队列等等都可以打包成一个image部署。
云时代的到来:AWS的成功,引到开发者将应用转移到云上,解决来硬件管理的问题,然而软件配置和管理香瓜的问题依然存在。Docker的出现正好能帮助软件开发着开阔思路,尝试新的软件管理的方法解决这个问题。
虚拟化手段的变化:云时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需分配的资源需求以及保证可用性和隔离性。然而无论是KVM还是Xen,在Docker看来都是在浪费资源,又难于管理,更加轻量级大LXC更加灵活和快速:
LXC的便携性:LXC在Linux 2.6的Kernel里就已经存在了,但是其设计之初并非为云计算考虑,缺少标准化的描述手段和容器的可便携性,决定其构建出的环境难于分发和标准化管理(相对于KVM之类的image和sanpshot的概念)。Docker就在这个问题上作出了实质性的创新方法。
1.2.5 Docker的用途
Docker的主要用途,目前又三大类:
提供了一次性的环境:比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
提供弹性的云服务:因为Docker容器可以随开随关,很适合动态扩容和所容。
组建微服务架构:通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。
第2章 服务器的搭建
2.1 服务器搭建
2.1.1 服务器环境搭建
目前在测试构建搭建,采用在VM虚拟机上创建虚拟机来实现,VM 软件上创建虚拟机教程如下:
1、创建服务器
2、安装向导
3、选择镜像文件(centOS7)
4、配置虚拟机名称,选择安装位置
5、设置磁盘大小
6、确认镜像参数
7、配置内存和CPU
8、网卡设置-自动桥接模式
9、设置完成-系统初始化
10、设置系统语言
11、配置以太网网络
12、配置用户(root密码)名称,该系统就配置完成了。
第3章 Docker安装
3.1 安装步骤
3.1.1 添加软件源
在宿主机上通过命令,升级虚拟机上所有包同时也升级软件和系统内核,
yum update
安装确认,安装正常请输入y进行确认。
在宿主机上通过命令,安装支持devicemapper存储类型插件。
yum install -y yum-utils device-mapper-persistent-data lvm2
在宿主机上通过命令,添加Docker稳定版本的yum软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.1.2 版本查看
在宿主机上通过命令,可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort
3.1.3 安装Docker
在宿主机上通过命令,选择对应版本17.12.1.ce进行安装,安装时需要确认是否正常。
yum install docker-ce-17.12.1.ce
3.1.4 开启自启
在宿主机上通过命令,启动Docker服务,同时加入开机启动。
开启docker服务
systemctl start docker
将docker服务加入开启自启动中
systemctl enable docker
3.1.5 Docker版本查看
在宿主机上通过命令docker version命令查看docker版本,如果client和server 同时出现说明docker启动成功。
docker version
3.2 Docker常用命令
3.2.1 基础操作
Ø docker images 查看镜像信息列表 镜像是静态的
Ø docker ps -a 查看运行中的所有容器
Ø **docker pull [images]:[version]**从dockerhub拉取指定镜像
Ø docker run -p 8000:80 -tdi --privileged [imageID] [command] 后台启动docker,并指定宿主机端口和docker映射端口。
-i:以交互模式运行容器,通常与 -t 同时使用;
-d:后台运行容器,并返回容器ID;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--privileged 容器将拥有访问主机所有设备的权限
通常情况下 [command] 填下 /bin/bash 即可。
特殊情况下,如需要在centos镜像中使用systemctl . 则应添加--privileged 并设置[command ]为 init。
当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:
Ø sudo docker exec -it [containerID] /bin/bash
交互模式中,使用 ctrl+p+q退出交互 保持运行,使用 exit命令退出并停止容器。
在容器非交互模式下,通过docker start/stop 命令来启动/停止已部署的容器服务。
Ø docker rm [containerID] 删除容器
Ø docker rmi [imageID] 删除镜像
Ø docker cp [YourHostFilePath] [containerID]:[DockerPath] 将宿主机内的指定文件传输至容器内部的指定地址。
3.2.2 镜像制作
Ø docker commit [containerID] [ImageName]:[Version] 将修改后的容器重新打包成镜像
Ø docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
Ø docker push [ImageID] [repertory_address] 提交镜像到云仓库
来源:oschina
链接:https://my.oschina.net/u/4119096/blog/3210053