docker学习系列:使用docker创建集成服务--lnmp(代码片段)

{-)大傻逼 {-)大傻逼     2022-10-26     205

关键词:

在掌握了docker的基本命令之后,我也是想着去用docker做一点实际的配套环境,就拿自己最常用的lnmp环境来做测试。配套环境运行的顺序依次是mysql->php->nginx,至于为什么,在下面会解释。

1.MySQL

之后服务运行的镜像如无特别的提示,都是从官方拉取的镜像,对于小企业以及个人开发者,官方的镜像更为安全,省心省力。

# 拉取镜像
$ docker pull mysql
# 运行MySQL
$ docker run MySQL --name mysql -d         -p 3306:3306         -v /var/lib/mysql/:/var/lib/mysql/         -e MYSQL_ROOT_PASSWORD=ilovec \

下面依次讲解上面运行各个参数

--name: 指定的运行的容器的名字
-d: 后台运行该容器
-p: 宿主机与容器的端口的映射
-v: 容器挂载到本地的目录映射
-e: 指定运行容器的环境变量

2.PHP

拉取官方镜像php-fpm,根据自己需要的php版本去下载,但是官方的镜像有些php常用的包没有包含在内,因此我们需要使用dockerfile去重新构建一下,下面是在Dockerfile里面安装mysqli和pdo两个php扩展包。

FROM php:7.1-fpm
# Install modules
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo_mysql
CMD ["php-fpm"]

运行php-fpm

docker run -d -p 9000:9000     --name php-fpm     --link mysql     -v /data/wwwroot/:/data/wwwroot/     php-fpm

注意参数当中的--link,这个参数在容器之间的连接十分有用,他会在当前容器的/etc/hosts里面添加一条域名解析,通过该域名可以连接到对应的容器,例如在上述的php-fpm里面,link到mysql,那么在php-fpm里面的php程序可以通过mysql字符串连接到刚刚运行的mysql容器,cat /etc/hosts就可以看到里面的解析记录了。

172.17.0.2  mysql b41d2569c06d

3.Nginx

通过以下命令运行nginx,由于nginx需要通过127.0.0.1:9000端口去连接php-fpm来解析php文件,所以需要通过link来连接php-fpm。

docker run -d -p 80:80      --name nginx     --link php-fpm     -v /data/wwwroot/:/data/wwwroot/     nginx

值得注意的是如果nginx解析文件的时候,如果请求的是静态文件,会直接返回该nginx容器里面的文件到客户端,如果请求的是php文件,他会把这个请求转发到php-fpm,然后php-fpm去本地去找php文件进行解析,也就是php-fpm容器本身的文件。

依次运行上面的3个服务的启动命令之后就可以搭建我们常见的lnmp了。但是每次运行服务都需要运行上面的命令显得有点麻烦,我们可以使用docker-compose命令去进行集中管理。

使用docker-compose

只需要创建一个lnmp目录,然后在lnmp目录下创建docker-compose.yml输入下面命令即可管理集成化的环境。
其实可以通过命令的名字就很容易知道各个指令的含义。

version: 由于docker-compose是一个发展中的工具,很有可能每个版本的指令都有所不同,因此需要在开头声明docker-compose指令的适用版本。
image: 指服务通过哪个镜像进行运行。
depends_on: 这个指明了软件的依赖与哪个软件,其实也是声明了软件运行的顺序。

version: '2'

services:
    mysql:
        image: "mysql"
        ports:
            - "3306:3306"
        volumes:
            - /var/lib/mysql/:/var/lib/mysql/
        environment:
            MYSQL_ROOT_PASSWORD: password
            
    php-fpm:
        image: "php-fpm"
        depends_on:
            - mysql
        links:
            - mysql
        ports:
            - "9000:9000"
        volumes:
            - /data/wwwroot/:/data/wwwroot/

    nginx:
        image: "nginx"
        depends_on:
            - php-fpm
        links:
            - php-fpm
        volumes:
            - /data/wwwroot/:/data/wwwroot/
        ports:
            - "80:80"
    

之后在这个lnmp目录下执行compose相关命令就可以控制。

# 运行docker-compose服务
$ docker-compose up -d
# 停止服务
$ docker-compose stop
# 删除该服务相关的容器
$ docker-compose rm
# 运行已存在docker-compose的服务
$ docker-compose start

docker基本学习

Docker的应用场景:加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建、运行并分享Docker容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。能够让独立服务或者... 查看详情

docker教程系列二

导航docker概念手动从镜像运行一个容器使用dockerfile打包镜像使用compose部署多容器应用给docker加上数据持久docker在服务器部署docker持续集成和部署手动从镜像运行一个容器手动启动一个容器手动在本地电脑的docker容器中运行一个w... 查看详情

docker学习系列docker简介

简介Docker是一个在全球范围领先的软件容器平台。开发人员可以使用容器来在协作过程中遇到的解决“不同环境配置”的问题。(例如,在传统的开发环境下,开发人员编写代码,然后交由测试人员测试,但是因为各自配置的环... 查看详情

docker学习系列:windows下安装docker

本文目录如下: windows按照docker的基本要求具体安装步骤开始使用安装远程连接工具连接docker安装中遇到的问题Docker的更新Docker中的jupyterwindows下使用docker的常用命令 windows下安装docker的方法应该参考docker官网,之前参考的... 查看详情

docker学习笔记之创建私有仓库

Docker的使用越来越多,在实际应用中,我们可能不止一台服务器,也可能不只是在同一个云上,那么面对同一个镜像,要部署到不同的云,不同的服务器,有什么便捷的方式呢?当然,有同学可能会说使用官方仓库的。这个固然... 查看详情

dockerswarm英文文档学习-1-概述

参考https://docs.docker.com/engine/swarm/Swarmmodeoverview群模式概述Docker的当前版本包括集群模式,用于本地管理称为集群的Docker引擎集群。使用DockerCLI创建一个集群,将应用程序服务部署到一个集群,并管理集群行为。1.突出特性:1)与... 查看详情

docker系列:docker-compose用法详解

今天给大家介绍一下docker-compose的用法,大家可以互相交流!1、简介docker-compose是Docker官方提供的用于定义和管理运行多个Docker容器的开源容器编排工具。可以使用YML文件来配置应用程序需要的所有服务,然后使用docker-compose运... 查看详情

系统学习docker践行devops理念

Docker代表的容器技术是近两年的大热技术,和人工智能、区块链等热点不同,容器技术的门槛并不高,每一个开发、测试、运维人员都能在日常工作中掌握和使用,是当今IT从业人员的必备技能之一。本课程会带大家系统学习什... 查看详情

系统学习docker践行devops理念

Docker代表的容器技术是近两年的大热技术,和人工智能、区块链等热点不同,容器技术的门槛并不高,每一个开发、测试、运维人员都能在日常工作中掌握和使用,是当今IT从业人员的必备技能之一。本课程会带大家系统学习什... 查看详情

docker学习--docker的基本认识

1、Docker架构  Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。  Docker容器通过Docker镜像来创建。  容器与镜像的关系类似于面向对象编程中的对象与类。2、Ubuntu16.04上安装docker比... 查看详情

docker容器学习二

Docker架构Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器。Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。Docker面向对象容器对象镜像类650)this.width=650;"src="https://s4.... 查看详情

docker学习docker系列结束-新的开始k8s(代码片段)

Docker学习(十一)Docker系列结束-新的开始K8S标签(空格分隔):dockek8sDocker系列结束上一篇讲到使用docker官方提供的容器编排工具docker-compose,但是docker-compose强调的是单机机进行容器编排,使用起来比较受限,对于一些大公司... 查看详情

容器与docker简介docker相关术语——微软微服务电子书翻译系列

本节列出了在更加深入Docker之前应该熟悉的术语和定义。有关详细的定义,请参阅Docker提供的术语表。 容器镜像(Containerimage):具有创建容器所需要的所有依赖和信息的包。镜像包括所有依赖(如框架)以及容器运行时使... 查看详情

docker系列之学习笔记教程汇总

Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为... 查看详情

docker系列之swarm集群搭建

学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单首先第一步是每台机器上面都要安装docker本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络互通(废话)docker早在1.12版本就已经支持原生的swarm集... 查看详情

docker1.12+swarm

DockerSwarm是一个用于创建Docker主机(运行Docker守护进程的服务器)集群的工具,使用Swarm操作集群,会使用户感觉就像是在一台主机上进行操作docker1.12集成了swarmkit,使你可以不用安装额外的软件包,使用简单的命令启动创建dockerswa... 查看详情

docker系列:全面认识docker和基本指令

原文:【Docker系列】:全面认识Docker和基本指令Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能。什么是DockerDocker是一个开源的应用容器引擎,基于Go语言,诞生于2013年初,最初发起者是dotCloud公司,开发者可... 查看详情

docket学习--docker入门

什么是Docker?  Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、baremetal、OpenStack集群... 查看详情