1.docker介绍
docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现,这里程序运行的依赖也就是容器就好比集装箱,容器所处的操作系统环境就好比货船或港口,程序的表现只和集装箱有关系(容器),和集装箱放在哪个货船或者哪个港口(操作系统)没有关系。
因此我们可以看到docker可以屏蔽环境差异,也就是说,只要你的程序打包到了docker中,那么无论运行在什么环境下程序的行为都是一致的,不会再有“在我的环境上可以运行”,真正实现“build once, run everywhere”。
注意:Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。
2.docker的优势
灵活性:即使是最复杂的应用程序也可以容器化。
轻量级:容器利用并共享主机内核,使它们在系统资源方面比虚拟机更有效率。
可移植:您可以在本地构建,部署到云上,并在任何地方运行。
松耦合:容器是高度自给自足和封装的,允许您在不影响其他容器的情况下替换或升级其中一个。
可扩展:您可以跨数据中心增加和自动分发容器副本。
安全性:容器对进程应用主动约束和隔离,而不需要用户进行任何配置。
3.docker的架构
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
4.安装docker
4.1在centos中运行下面代码
# 1、yum包更新到最新---因为现在的docker更新比较快,而现在我们使用的centos不是最新
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源---从哪个网址下载docker软件
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v
4.2配置镜像加速器
默认情况下,将来从docker hub (Docker)上下载docker镜像,太慢。一般都会配置镜像加速器。
这里选择使用阿里镜像加速器
5.docker服务中常用的命令
查看docker服务的状态: systemctl status docker
关闭docker服务: systemctl stop docker
启动docker服务: systemctl start docker
重启docker服务: systemctl restart docker
开机自启动docker服务: systemctl enable docker
5.1 关于docker镜像的命令
(1)搜索镜像----建议在镜像仓库搜索
https://hub.docker.com/https://hub.docker.com/
docker search 镜像名称
(2)拉取指定的镜像到本地
#两种方法
docker pull centos #拉取centos镜像 如果没有使用版本默认为latest
docker pull centos:7 # :7表示版本号
(3) 查看本地的镜像
docker images
(4)删除镜像
#两种方法
docker rmi imageID #根据镜像id删除镜像
docker rmi name:tag #根据名称版本号删除镜像
关于docker容器的命令
(1) 创建容器并进入容器
#这种方式如果退出容器时,会关闭容器。
docker run -it --name=c1 centos:7 /bin/bash
# -i 保持容器一直运行
# -t 给容器分配伪终端接收命令
# --name 给容器起名字
# centos:7 镜像加版本号
# /bin/bash 进入容器的初始化指令 相当于打开一个shell窗口
exit 退出容器
(2)查看所有容器
docker ps #查询正在运行的容器
docker ps -a # 查询所有的容器。
(3)根据镜像创建容器
docker run -id --name=c2 centos:latest #根据镜像创建容器当不会进入容器内部
(4) 进入指定容器内部 进入容器后再退出则不会关闭容器
docker exec -it c2 /bin/bash
c2:容器的名称
(5) 关闭容器
docker stop #容器id或名称
(6)开启容器
docker start #容器id或名称
(7)删除容器---该容器必须是关闭状态
docker rm #容器id或名称