Docker基本管理

打印 上一主题 下一主题

主题 549|帖子 549|积分 1657

        随着计算机近几十年的蓬勃发展,产生了大量优秀系统和软件。软件开辟职员可以自由选择名种软件应用。但同时带来的问题就是必要维护一个非常庞大的开辟、测试和生产环境。 面临这种环境,Docker 容器技术横空出世,提供了简朴、灵活、高效的办理方案,不必要过多地改变现有的利用习惯,就可以和已有的工具,如 OpenStack 等配合利用。因此,掌握 Docker 相关技术也是途经云计算的必经之路。
        本章将依次介绍 Docker 的三大核心概念--镜像、容器、堆栈,以及安装 Docker 与介绍围绕镜像和容器的具体操纵。
一、Docker概述

        因为 Docker 轻便、快速的特性,可以使应用到达快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若于个小变更积攒到一定程度再变更。每次变更一小部分实在是一种非常安全的方式,在开辟环境中能够快速提高工作效率。
        Docker 容器能够帮助开辟职员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作。订定一套容器标准能够使系统管理员更改容器的时间,程序员不必要关心容器的变革,而更专注自己的应用程序代码。从而隔离开了开辟和管理,简化了开辟和部署的本钱。
 

1.1什么是Docker



  • 是一种轻量级的“假造机”
  • 在Linux容器里运行应用的开源工具
        如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还必要任何时 间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。
1.2Docker的优势

        Docker 容器运行速度很快,启动和制止可以在秒级实现,比传统假造秘密快很多;Docker 核心办理的问题是利用容器来实现雷同假造机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在包管应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为大概。Docker 操纵方便,可以通过 Dockerfile 设置文件支持灵活的自动化创建和部署。表 1-1将 Docker容器技术与传统假造机的特性进行了比力。

        Docker之所以拥有浩繁优势,与操纵系统假造化自身的特点是分不开的。传统假造机必要有额外的假造机管理程序和假造机操纵系统层,而 Docker 容器则是直接在操纵系统层面之上实现的假造化。图 1.2 是 Docker 与传统假造机架构。

1.3镜像

        镜像、容器、堆栈是 Docker 的三大核心概念。其中 Docker 的镜像是创建容器的基础,雷同假造机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 Cent OS 操纵系统环境,称为一个 CentOS 镜像;也可以是一个安装了 MSQL 的应用程序,称之为一个 MySQL 镜像等等。
        Docker 提供了简朴的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接利用。
1.4容器

        Docker 的容器是从镜像创建的运行实例,它可以被启动、制止和删除。所创建的每一个容器都是相互隔离、互不可见,以包管安全性的平台。可以将容器看作是一个浅易版的 Linux 环境,Docker 利用容器来运行和隔离应用。
1.5堆栈

        Docker 堆栈是用来集中保存镜像的地方,当创建了自己的镜像之后,可以利用 push 命令将它上传到公有堆栈(Public)大概私有堆栈(Private)。当下次要在另外一台机器上利用这个镜像时,只需从堆栈获取。
        堆栈注册服务器(Registry)是存放堆栈的地方,其中包含了多个堆栈。每个堆栈集中存放某一类镜像,而且利用不同的标签(tag)来区分它们。现在最大的公共堆栈是docker Hub,存放了数量庞大的镜像供用户下载利用。
二、安装 Docker

        Docker 支持在主流的操纵系统平台上进行利用,包括 Windows 系统、Linux 系统、以及 MacOS 系统等。现在最新的 RHEL、Cent OS 以及 Ubuntu 系统官方软件源中都已经默认自带了Docker 包,可直接安装利用,也可以用 Docker 自己的 YUM 源进行设置。
        Cent OS 系统下安装 Docker 可以有两种方式:一种是利用 CURL 获得 Docker 的安装脚本进行安装,另一种是利用 YUM 堆栈来安装 Docker。
        注意:现在 Docker 只能支持 64 位系统。
2.1安装最新版本Docker依赖版本环境

  1. #本安装方式使用阿里的软件仓库
  2. #Step1: 添加软件源信息
  3. yum -y install wget
  4. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  5. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  6. yum clean all
  7. yum makecache
复制代码
  1. #Step2: 使用本地yum源安装必要的一些系统工具
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. setenforce 0
  5. sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
  6. yum install -y yum-utils device-mapper-persistent-data lvm2
  7. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
  1. #Step 3: 安装Docker-CE
  2. yum clean all
  3. yum makecache fast
  4. yum repolist
  5. yum -y install docker-ce
复制代码
  1. ##Step 4:添加国内镜像站
  2. mkdir /etc/docker/
  3. cat>/etc/docker/daemon.json<<EOF
  4. {
  5. "registry-mirrors": ["https://registry.docker-cn.com"]
  6. }
  7. EOF
复制代码
备注:
也可以将国内的镜像站改为阿里镜像加快器,Docker镜像加快地点可以在阿里上申请
阿里云登录 - 接待登录阿里云,安全稳定的云计算服务平台
  1. #Step 5: 开启Docker服务
  2. systemctl restart docker
  3. systemctl enable docker
  4. docker version
  5. cat>> /etc/sysctl.conf <<EOF
  6. net.ipv4.ip_forward=1
  7. net.bridge.bridge-nf-call-ip6tables = 1
  8. net.bridge.bridge-nf-call-iptables = 1
  9. EOF
  10. sysctl -p
复制代码
三、Docker镜像操纵

1.搜索镜像

  1. [root@localhost ~]# docker search lamp
复制代码
2.获取镜像

注意:可选择星级较高的镜像
  1. [root@localhost ~]# docker pull mattrayner/lamp
复制代码
3.查看镜像信息

  1. [root@localhost ~]# docker images
复制代码
查看镜像的具体信息
  1. [root@localhost ~]# docker inspect c15
复制代码
修改镜像标签(老名字+新名字)
  1. [root@localhost ~]# docker tag mattrayner/lamp lamp:lamp
  2. [root@localhost ~]# docker images
复制代码
注意:
修改标签时可以只设置新的镜像名称,不要标签TAG,此时的标签会利用默认的latest当做标署名
4.删除镜像

用镜像名删除
  1. [root@localhost ~]# docker rmi lamp:lamp
复制代码
注意:如果标署名为latest,删除时只用镜像名马上
用ID删除
  1. [root@localhost ~]# docker rmi c15
复制代码
注意:
用ID删除时,不能有同ID的镜像,好比修改镜像标签而天生的新的镜像,该镜像的ID和原始镜像是雷同的,此时不能用ID删除。
5.存出镜像和载入镜像

  1. [root@localhost ~]# docker save -o lamp mattrayner/lamp
  2. [root@localhost ~]# docker rmi mattrayner/lamp
  3. [root@localhost ~]# docker load<lamp
复制代码
6.上传镜像

  1. [root@localhost ~]# docker tag mattrayner/lamp 58wangjunqing/lamp:lamp
复制代码
注意:
要想将自己的镜像上传到Docker,必要修改镜像名字,名字的前缀要利用Docker账号
  1. [root@localhost ~]# docker login
  2. 输入账号和密码后即可登录成功
  3. [root@localhost ~]# docker push 58wangjunqing/lamp:lamp
  4. [root@localhost ~]# docker search 58wangjunqing
复制代码
备注:注册Docker账号,登录网址https://hub.docker.com/

四、Docker容器操纵

1.容器的创建与启动

  1. [root@localhost ~]# docker create -it mattrayner/lamp /bin/bash
复制代码
注意:
-i:让容器的输入保持打开状态
-t:让Docker分配一个伪终端
-d:以守卫进程的方式运行该容器
此命令只是把容器创建了出来,并没有运行
  1. [root@localhost ~]# docker ps -a
复制代码
2.容器的运行

  1. [root@localhost ~]# docker start 5a
  2. 在创建容器时直接启动容器
  3. [root@localhost ~]# docker run centos:7 /usr/bin/bash -c "ls /root"
  4. 注意:此命令只是用该容器执行了一下ls命令,随后此容器就关闭了
  5. 在启动容器时持续在后台运行
  6. [root@localhost ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
  7. [root@localhost ~]# docker run -dit centos:7 /bin/bash
复制代码
3.容器的制止

  1. [root@localhost ~]# docker stop b18
复制代码
4.进入容器

  1. [root@localhost ~]# docker exec -it 03f /bin/bash
复制代码
退出
  1. [root@03f062851c52 /]# exit
复制代码
5.容器导出

  1. [root@localhost ~]# docker export 03f >centos7
复制代码
6.容器导入天生镜像

  1. [root@localhost ~]# docker import centos7 centos7:test
  2. [root@localhost ~]# docker images
复制代码
7.容器删除

  1. [root@localhost ~]# docker rm 7f
复制代码
删除全部容器
  1. docker rm -f $(docker ps -a | awk '{print $1}')
复制代码
8.端口映射

  1. [root@consul ~]# docker pull httpd
复制代码
(1)随机映射端口

  1. [root@consul ~]# docker run -d -P httpd
  2. [root@consul ~]# docker ps -a
复制代码
(2)指定映射端口

  1. [root@consul ~]# docker run -d -p 49280:80 httpd
  2. [root@ consul ~]# docker ps -a
复制代码
备注:
49280:是映射到外部的端口,这个端口范围通常是从32768到61000
80:是容器的端口
备注:
在开启防火墙的环境下,创建容器时如果指定了端口映射,转发规则会自动的添加到docker主机的防火墙策略中,这样,外部主机就可以通过docker主机的ip地点+容器对外映射的端口访问容器的服务,这样就包管了docker主机的安全性
如果要关闭防火墙,会提示无法创建iptables策略,重启一下docker进程即可
9.容器互联

(1)创建源容器

  1. [root@consul ~]# docker run -dit --name web01 centos:7
复制代码
(2)创建接收容器

  1. [root@consul ~]# docker run -dit --name web02 --link web01:web01 centos:7
复制代码
备注:
 --link web1:web1
冒号前的web1,是第一个必要链接的容器的名字
冒号后的web1,是链接到第二个容器后,为第一个容器起的别名
(3)测试容器互联

  1. [root@consul ~]# docker exec -it web02 /bin/bash
  2. [root@71591dd4a58e /]# cat /etc/hosts
  3. 127.0.0.1        localhost
  4. ::1        localhost ip6-localhost ip6-loopback
  5. fe00::0        ip6-localnet
  6. ff00::0        ip6-mcastprefix
  7. ff02::1        ip6-allnodes
  8. ff02::2        ip6-allrouters
  9. 172.17.0.2        web01 36411a49ce54
  10. 172.17.0.3        71591dd4a58e
  11. [root@71591dd4a58e /]# ping web01
复制代码
五、Docker的数据管理

1.什么是数据卷

        Docker 提供的一种长期化数据存储办理方案,用于在容器之间共享和长期化数据。数据卷办理了容器中数据易失性的问题,使得容器可以更加灵活和可移植。
2.创建数据卷

  1. [root@localhost ~]# docker run -dit -v /data1 -v /data2 --name web03 centos:7
  2. [root@localhost ~]# docker  exec -it web03 /bin/bash
  3. [root@9a398d3ec1f3 /]# cd /data1
  4. [root@9a398d3ec1f3 data1]# cd /data2
复制代码
3.数据卷容器

  1. [root@localhost ~]# docker run -dit --volumes-from web03 --name db1 centos:7 /bin/bash
复制代码
4.挂载主机目录作为数据卷

案例1
  1. [root@localhost ~]# docker run -dit -p 8080:80 -v /data1:/usr/local/apache2/htdocs --name web04 httpd
  2. [root@localhost ~]# echo "ni hao">/data1/index.html
  3. [root@localhost ~]# curl 192.168.10.101:8080
复制代码
 案例2
  1. [root@localhost ~]# mkdir -p /www/{conf,html}
  2. 将编辑好的nginx配置文件拷贝到/www/conf
  3. 将网站代码拷贝到/www/html
  4. [root@localhost ~]# docker run -dit -p 9090:80 -v /www/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/html:/www/html --name web05 nginx /bin/bash -c "nginx"
  5. [root@localhost conf]# docker run -d -p 9090:80 -v /www/conf/default.conf:/etc/nginx/conf.d/default.conf -v /www/html:/usr/share/nginx/html -v/www/nginx/log:/var/log/nginx --name web05 nginx
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表