Docker

一、Docker 介绍

1、什么是虚拟化

在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

2、什么是 Docker

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 DockerInc。Redhat 已经在其RHEL6.5 中集中支持 Docker;Google 也在其 PaaS产品中广泛应用。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是Linux容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
为什么选择 Docker?
(1)上手快。
用户只需要几分钟,就可以把自己的程序“Docker 化”。Docker依赖于“写时复制”(copy-on-write)模型,使修改应用程序也非常迅速,可以说达到“随心所致,代码即改”的境界。随后,就可以创建容器来运行应用程序了。大多数Docker 容器只需要不到 1秒中即可启动。由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户尽可能的充分利用系统资源。
(2)职责的逻辑分类
使用 Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。从而降低那种“开发时一切正常,肯定是运维的问题(测试环境都是正常的,上线后出了问题就归结为肯定是运维的问题)”
(3)快速高效的开发生命周期
Docker 的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从该盒子中一件件的取。)
(4)鼓励使用面向服务的架构
Docker 还鼓励面向服务的体系结构和微服务架构。Docker 推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,可以在一个容器中运行多个应用程序)

3、容器与虚拟机比较

在这里插入图片描述

二、Docker 安装与启动

Docker 官方建议在 Ubuntu 中安装,因为 Docker 是基于 Ubuntu 发布的,而且一般Docker出现的问题 Ubuntu 是最先更新或者打补丁的。在很多版本的 CentOS中是不支持更新最新的一些补丁包的。由于我们学习的环境都使用的是 CentOS,因此这里我们将 Docker 安装到 CentOS上。注意:这里建议安装在CentOS7.x 以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且 Docker 很多补丁不支持更新。请直接挂载课程配套的Centos7.x 镜像
(1)yum 包更新到最新

sudo yum update

(2)安装需要的软件包,yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

(3)设置 yum 源为阿里云

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-
ce.repo

(4)安装 docker

sudo yum install docker-ce

(5)安装后查看 docker 版本

docker -v

三、 Docker 启动与停止基本命令

1、启动docker

systemctl start docker

2、停止docker

systemctl stop docker

3、重启docker

systemctl restart docker

4、查看docker状态

systemctl status docker

5、开机启动

systemctl enable docker

6、查看 docker 概要信息

docker info

四、Docker 常用命令

1、查看镜像

docker images
注意:

REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像 ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
这些镜像都是存储在 Docker 宿主机的/var/lib/docker 目录下

2、搜索镜像

docker search 镜像名称
//例如:docker search redis

3、从中央仓库中拉取镜像(下载)镜像到本地

docker pull 镜像名称:镜像版本
//docker pull centos:7

4、删除镜像

docker rmi 镜像ID    或   docker rmi 镜像名称

5、查看正在运行的容器

docker ps

6、查看所有容器

docker ps -a   或   docker all

7、查看最后一次运行的容器

docker ps -l

8、创建文件夹

mkdir 文件夹名称

五、创建与启动容器

1、创建容器

创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在 run 后面加上-d
参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t 两个参数,创建后就会
自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

1、交互式创建容器

docker run -it --name=容器名称 镜像名称:标签/bin/bash
例如:docker run -it --name=mycentos01 centos:7 /bin/bash

退出容器
exit

2、守护式方式创建容器

docker run -id --name=容器名称 镜像名称:标签
docker run -id --name=mycentos02 centos:7

注意
交互式 -it 守护式 -id
区别:交互式,创建容器,并进入容器目录下
守护式,创建容器,不会进入容器目录下

3、登录守护式容器方式:

docker exec -it 容器名称 (或者容器 ID) /bin/bash
docker exec -it mycentos02 /bin/bash

2、停止与启动容器

停止容器:

docker stop 容器名称(或者容器 ID)
docker stop mycentos02

启动容器:

docker start 容器名称(或者容器 ID)
docker stop mycentos02

3、文件拷贝

拷进容器

docker cp 需要拷贝的文件或目录 容器名称:容器目录
docker cp /root/docker.txt mycentos02:/root/docker.txt

拷出容器

docker cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp mycentos02:/root/docker.txt /root/test.txt

4、目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器 添加-v 参数 后边为宿主机目录。
例如

docker run -id -v 宿主机目录:容器目录 --name=容器名称 镜像名称:镜像标签名
docker run -id -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:7

注意
目录挂载必须在创建容器的时候就挂载,不能后面追加挂载

5、删除容器(删除容器时不能删除正在运行的容器,必须先把容器停止)

删除指定的容器

docker rm 容器名称(容器 ID)

例如:
docker stop mycentos01
docker rm mycentos01

六、应用部署

1、MySQL部署

(1)、拉取MySQL镜像
docker pull centos/mysql-57-centos7
(2)、创建容器
docker run -id --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=admin centos/mysql-57-centos7
注意

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是 root 用户的登陆密码

(3)、远程(oracle)登录MySQL

连接宿主机的 IP ,指定端口为 3307

2、部署Tomcat

(1)、拉取镜像
docker pull tomcat:7-jre7
(2)创建容器
docker run -id --name=mytomcat -p:9090:8080 tomcat:7-jre7

3、部署nginx

创建容器

docker run -id --name=mynginx -p 81:80 nginx

4、部署Redis

创建容器

docker run -id --name=myredis -p 9999:6379 redis

七、迁移与备份

迁移原理

在这里插入图片描述
1、容器提交为镜像

docker commit 容器名称 镜像名称
docker commit mysql mysql_i

2、镜像备份

docker save -o 要打包成压缩包的名称 要打包的镜像名称
docker save -o mysql.tar mysql_i

3、镜像恢复(首先我们先删除掉 mysql_i 镜像 然后执行此命令进行恢复)

docker load -i mysql.tar

-i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值