Docker技术

一.Docker简介

1.了解虚拟化的概念

在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种 实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间 的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚 拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计 算能力和资料存储。

2.docker技术又称容器技术

由于“客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看 起来并不是非常灵活。例如:可以在 Ubuntu 服务中运行 Redhat Enterprise Linux,但无法再 Ubuntu 服务器上运行 Microsoft Windows。

3.容器与虚拟机的区别

容器:

容器管理程序虚拟化通过中间层将一台或者多台独立 的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因 此,容器虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行 在同一台宿主机上。

虚拟机:

多个虚拟系统共享硬件资源,优点:可以安装不同内核的操作系统

4.Docker特点:

1)上手快

2)职责的逻辑分类

3)快速高效的开发生命周期

4)鼓励使用面向服务的架构

5.Docker组件

1)Docker客户端与服务器

2)Docker镜像

3)Registry(注册中心)

4)Docker容器

6.使用Docker做什么?

容器提供了隔离性,结论是,容器可以为各种测试提供很好的沙盒环境。并且,容器本

身就具有“标准性”的特征,非常适合为服务创建构建块。Docker 的一些应用场景如下:

  • 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、 运行并分享 Docker 容器。容器可以在开发环境中构建,然后轻松的提交到测试环境中,并 最终进入生产环境。
  • 能够让独立的服务或应用程序在不同的环境中,得到相同的运行结果。这一点在 面向服务的架构和重度依赖微型服务的部署由其实用。
  • 用 Docker 创建隔离的环境来进行测试。例如,用 Jenkins CI 这样的持续集成工具 启动一个用于测试的容器。
  • Docker 可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是 一开始就在生产环境部署、测试。

二.Docker安装

1. 在Ubuntu中安装Docker

更新ubuntu的apt源索引

sudo apt-get update

安装包允许apt通过HTTPS使用仓库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

这一步如果出现了gpg: 无法解析公钥服务器 URL

可以sudo vim /etc/hosts

添加:

219.76.4.4 git .4 github-cloud.s3.amazonaws.com

设置Docker稳定版仓库

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

添加仓库后,更新apt源索引

sudo apt-get update

安装最新版Docker CE(社区版)

sudo apt-get install docker-ce

检查Docker CE是否安装正确

sudo docker run hello-world

出现如下信息,表示安装成功

三.Docker操作

1.Docker镜像操作

1>列出镜像    docker image ls  

  • REPOSITORY:镜像所在的仓库名称
  • TAG:镜像标签
  • IMAGEID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小

2>拉取镜像   

docker image pull library/hello-world

可以直接在线下的...

3>删除镜像

docker image rm 镜像名或镜像id

例如: 

docker image rm hello-world

2.Docker容器操作 

1>创建容器

docker run [option] 镜像名 [向启动容器中传入的命令]

常用可选参数说明:

  • -i 表示以“交互模式”运行容器
  • -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。 
  • --name 为创建的容器命名
  • -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
  • -d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
  • -p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
  • -e 为容器设置环境变量
  • --network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同

2>交互式容器

docker run -it --name=myubuntu ubuntu /bin/bash

 在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。

重点在docker run -it --name=myubuntu ubuntu /bin/bash

3>守护式容器

docker run -dit --name=myubuntu2 ubuntu

如果写了d,就会创建守护式容器,此时i可写可不写,不起作用 

4>进入已运行的容器

docker exec -it 容器名或容器id 进入后执行的第一个命令

例如: 

docker exec -it myubuntu2 /bin/bash

 5>查看容器

# 列出本机正在运行的容器
docker container ls

# 列出本机所有容器,包括已经终止运行的
docker container ls --all

6>停止和启动容器(创建时默认容器已启动)

# 停止一个已经在运行的容器
docker container stop 容器名或容器id

# 启动一个已经停止的容器
docker container start 容器名或容器id

# kill掉一个已经在运行的容器
docker container kill 容器名或容器id

删除容器:

docker container rm 容器名或容器id
总结:1. docker run -it 镜像名 交互式运行,已创建容器,退出自动关闭容器
      2.docker  run 镜像名   创建容器
      3.docker  run -dit --name=容器名 镜像名 守护式容器(即在后端总动运行)
第1,2种方式在 docker container -ls --all 可以查看到
也可以用 docker container rm 容器名 删除
也可以启动和停止

3.将容器保存为对象

docker commit 容器名 镜像名

 4.镜像备份与迁移

docker save -o 保存的文件名 镜像名

例如:

docker save -o ./ubuntu.tar ubuntu

在拿到镜像文件后,可以通过load方法,将镜像加载到本地

docker load -i ./ubuntu.tar

总结:

 四.使用Docker安装FastDFS

1.FastDFS分布式文件系统

FastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS 架构包括Tracker serverStorage server。客户端请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。

  • Tracker server作用是负载均衡和调度,通过 Tracker server 在文件上传时可以根据一些 策略找到 Storage server 提供文件上传服务。可以将 tracker 称为追踪服务器调度服务器

  • Storage server作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上, Storageserver 没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将 storage 称为存储服务器

  • 服务端两个角色:

  • Tracker : 管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。
  • Storage : 实际保存文件, Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有 主从的概念。

2. 获取镜像

可以利用已有的FastDFS Docker镜像来运行FastDFS。

获取镜像可以通过下载

docker image pull delron/fastdfs

也可是直接使用提供给大家的镜像备份文件

docker load -i 文件路径/fastdfs_docker.tar

2. 运行tracker

执行如下命令开启tracker 服务

docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
  • 我们将fastDFS tracker运行目录映射到本机的 /var/fdfs/tracker目录中。

执行如下命令查看tracker是否运行起来

docker container ls

如果想停止tracker服务,可以执行如下命令

docker container stop tracker

停止后,重新运行tracker,可以执行如下命令

docker container start tracker

3. 运行storage

执行如下命令开启storage服务

docker run -dti --network=host --name storage -e TRACKER_SERVER=127.0.0.1:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

注意:127.0.0.1 需要改成自己的IP地址
  • TRACKER_SERVER=本机的ip地址:22122 本机ip地址不要使用127.0.0.1
  • 我们将fastDFS storage运行目录映射到本机的/var/fdfs/storage目录中
  • 会生成固定的文件夹,导入数据的时候需要对用存入数据的文件夹替换
  • 这里因为我重新生成过容器,遇到一个问题,storage容器开启后,docker container ls显示没有,但是确能访问到图片,隔一段时间就访问不到了?
  • 解决办法:
  • 如果无法重新运行,可以删除/var/fdfs/storage/data目录下的fdfs_storaged.pid 文件,然后重新运行storage。

执行如下命令查看storage是否运行起来

docker container ls

如果想停止storage服务,可以执行如下命令

docker container stop storage

停止后,重新运行storage,可以执行如下命令

docker container start storage

注意:如果无法重新运行,可以删除/var/fdfs/storage/data目录下的fdfs_storaged.pid文件,然后重新运行storage。

猜你喜欢

转载自blog.csdn.net/Spencer_q/article/details/82152114