Docker容器技术

1. Docker容器技术

1.1 为什么使用docker

Docker容器技术_第1张图片

Docker容器技术_第2张图片 

我就可以把项目以及项目依赖的配置和软件一起打包---【镜像】---直接在测试环境下运行该镜像。无需担心环境的不同导致无法运行的问题。  

1.2 Docker技术

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Docker容器技术_第3张图片

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

Docker的应用

Docker容器技术_第4张图片

 

 

1.3.安装Docker

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,

演示:CentOS7安装Docker

官网: Docker: Accelerated, Containerized Application Development

虚拟机中执行步骤:

# 1、yum包更新到最新
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---下载并安装docker-ce[社区版] docker-ee[企业版]
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

1.4.Docker架构

Docker容器技术_第5张图片

  • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

  • 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

  • 仓库(Repository)是集中存放镜像文件的场所。

    类似于

    Maven仓库,存放各种jar包的地方;

    github仓库,存放各种git项目的地方;

    Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    最大的公开仓库是 Docker Hub(https://hub.docker.com/),

    存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

 

1.5.配置Docker镜像加速器

默认情况下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器:

USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)

阿里云--网易云--腾讯云

演示:阿里云中配置镜像加速器

进入阿里云官网

搜索

Docker容器技术_第6张图片

 Docker容器技术_第7张图片

 Docker容器技术_第8张图片

 

1.6 docker服务的命令

停止docker服务: systemctl stop docker

启动docker服务: systemctl start docker

重启docker服务: systemctl restart docker

开机启动docker服务: systemctl enable docker

1.7 镜像的命令

Docker容器技术_第9张图片

1.从仓库中搜索相关的镜像

docker search 镜像名
例如: docker search mysql

Docker容器技术_第10张图片

2. 拉取镜像到本地

docker pull 镜像名:版本号 ===如果没有跟版本号,那么它会拉取最新的latest

3.查看本地有哪些镜像

docker images

4.删除本地指定的镜像

docker rmi 镜像名:版本号 或镜像编号

5.删除所有的镜像

docker rmi $(docker images -q)    [慎用]

6.帮助命令

docker --help  [找到所有的docker命令]

docker 命令 --help  [命令的语法]

1.8 容器的命令

Docker容器技术_第11张图片

运行centos容器:并进入到容器内

docker run -it --name=c1 centos:7 /bin/bash
  •  -i:进入容器内部
  • -t:交互平台 ===它几乎和-i一起使用。
  • --name: 为容器起个名称--如果没有使用--name那么docker为自动分配一个名字
  • centos:7===镜像名:版本号
  • /bin/bash===提供一个shell命令窗口

退出容器

exit: ---会关闭容器
ctrl+q+p:--退出不会关闭容器

查看当前的容器

docker ps:  查看所有正在运行的容器
docker ps -a:查看所有的容器。
docker ps -aq: 查看所有容器的id

创建一个容器不进入到该容器内部

docker run -id --name=容器的名称  centos:7 /bin/bash

进入指定的容器内部:---使用exit不会关闭容器

docker exec 容器的id或者容器的名称  /bin/bash

关闭|启动|删除容器

docker stop 容器名|容器id
docker start 容器名|容器id
docker rm 容器名|容器id  [只能删除停止的容器]
docker rm -f 容器名|容器id [强制删除容器]
docker rm -f $(docker ps -aq): 删除所有容器

查看容器的日志

docker logs 容器id

1.9 数据卷

Docker容器技术_第12张图片

 window系统是否可以直接把文件复制到容器中:----不能--但是可以间接复制过去

Docker容器技术_第13张图片

为了保证容器数据的可靠性,----需要把容器内部的某个目录--挂载到宿主机中的某个目录中。

宿主机中的这个目录就是数据卷

 概念:

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

作用:

  • 解决数据持久化问题
  • 解决外部机器和容器的间接通讯问题
  • 解决容器之间的数据交换

如何配置数据卷--volume

  • 创建启动容器时,使用-v参数设置数据卷
  • docker run ... -v 宿主机目录(文件):容器内目录(文件) ...

注意事项:

  • 目录必须是绝对路径
  • 如果目录不存在,会自动创建
  • 可以挂载多个数据卷

例子:

 docker run -id --name=c2 -v /usr/app:/usr/ykq -v /usr/app2:/usr/ykq2 centos:7 /bin/bash

1.10 通过镜像部署软件

1.10.1 部署redis

(1)拉取redis镜像

docker pull redis:6.0.20 

(2)运行redis镜像

docker run -id --name=redis6 -p 6380:6379 redis:6.0.20 
-p: 端口映射  容器内部的端口和宿主机之间的映射。

(3)使用外部机器连接redis

Docker容器技术_第14张图片

 

如果把redis容器删除了---里面的数据还有吗?---如果我想修改redis的配置内容。

未完待续...

你可能感兴趣的:(docker,容器,运维)