Docker入门

一、Docker简介

​ Docker 是一个开源的应用容器引擎,基于Go 语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。从 2017 年 3 月开始 Docker 在原来的基础上分为两个分支版本 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

1、Docker应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

2、Docker的有优点

  • 简化程序

    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

  • 避免选择恐惧症

    如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

  • 节省开支

    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

3、Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器对象
镜像

在这里插入图片描述

Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container)容器是独立运行的一个或一组应用。
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

二、Docker安装

1、CentOS Docker安装

​ 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

1.1、CentOS7 yum安装

Docker 要求 CentOS 系统的内核版本高于 3.10 ,通过 uname -r命令查看你当前的内核版本,看CentOS 版本是否支持 Docker 。

  • 移除旧版本

    sudo yum remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-selinux \
                    docker-engine-selinux \
                    docker-engine
    
  • 安装必要的系统工具

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • yum-utils
    • device-mapper-persistent-data
    • lvm2
  • 添加软件源信息

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  • 更新yum缓存

    sudo yum makecache fast
    
  • 安装Docker-ce

    sudo yum -y install docker-ce
    
  • 启动Docker后台服务

    sudo systemctl start docker
    sudo systemctl enabled docker
    
  • 测试运行

    sudo docker run hello-world
    

    由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。

1.2、CentOS6 yum安装
  • 升级内核(带aufs模块)

    • yum安装带aufs模块的3.10内核

      cd /etc/yum.repos.d
      wget http://www.hop5.in/yum/el6/hop5.repo
      yum install kernel-ml-aufs kernel-ml-aufs-devel
      
    • 修改grub的主配置文件/etc/grub.conf,设置default=0,表示第一个title下的内容为默认启动的kernel(一般新安装的内核在第一个位置)。

    • 重启系统,用uname -r 命令查看内核就是否成功升级成功。

    • grep aufs /proc/filesystems 查看内核是否支持aufs

  • 安装docker

    • 下载安装epel

      rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
      sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo
      
    • yum安装docker-io

      yum -y install docker-io
      
1.3、脚本安装Docker

三、Docker使用

四、Docker实例

1、Docker安装Nginx

1.1、下载官方镜像
docker pull nginx
1.2、运行容器
mkdir -p /docker/nginx
cd /docker/nginx

docker run --name mynginx -d -p 81:80 -v $PWD/html:/usr/share/nginx/html -v $PWD/logs:/var/log/nginx -v $PWD/conf/conf.d:/etc/nginx/conf.d -d nginx
1.3、配置虚拟主机

vim conf/conf.d/default.conf

server {
    listen       80;
    server_name  apps.backend.com;
    root /usr/share/nginx/html;
    index index.php index.html index.htm;
 
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
    }
    
    location ~ .*\.(js|css)?$ {
        expires 1h;
    }
}
1.4、重启容器
docker restart mynginx

2、Docker安装PHP

2.1、下载镜像
docker pull php:7.3.0-fpm
2.2、运行容器
docker run -p 9000:9000 --name  myphp -v /docker/nginx/html:/usr/share/nginx/html -d php:7.3.0-fpm
2.3、安装PHP扩展
  • 进入容器

    docker exec -it myphp /bin/bash
    
  • 安装扩展

    apt-get update && \
    apt-get install -y libfreetype6-dev libjpeg62-turbo-dev && \
    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/  &&  \
    docker-php-ext-install gd pdo_mysql
    

    注意: 安装扩展之后重启php-fpm才会生效

2.4、查询PHP容器IP
docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp
# 假如IP为:172.17.0.3
2.5、修改nginx配置
  • 将虚拟主机中fastcgi_pass 127.0.0.1:9000; 改为fastcgi_pass 172.17.0.3:9000;
  • 重启nginxdocker restart mynginx
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值