标签: Docker

  • Docker 本地基本搭建Nginx+PHP-FPM+MARIADB 命令

    Docker 本地基本搭建Nginx+PHP-FPM+MARIADB 命令

    记录一下在MacOS下利用Docker搭建Nginx+php-fpm+MariaDB的常用命令:

    # 拉取镜像资源
    docker pull mariadb && docker pull bitnami/php-fpm && docker pull nginx
    # 本地Docoker建立顺序
    docker run -d --name jmysql --restart=always -e MYSQL_ROOT_PASSWORD=jjjjjj -e TZ="Asia/Shanghai" mariadb
    docker run -d --name jphp-fpm -v /wwwroot:/data/wwwroot --restart=always -e TZ="Asia/Shanghai" --link jmysql bitnami/php-fpm
    docker run -d --name jnginx -v /DockerConfig/nginx/conf.d:/etc/nginx/conf.d -v /wwwroot:/data/wwwroot -p 8081:80 --restart=always -e TZ="Asia/Shanghai" --link jphp-fpm --link jmysql nginx
    #启动顺序
    docker start jmysql
    docker start jphp-fpm
    docker start jnginx

  • 什么是Docker?Docker的架构是什么样的?

    什么是Docker?Docker的架构是什么样的?

    什么是Docker?

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    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安装Mariadb数据库 设置root密码 图文教程

    Docker安装Mariadb数据库 设置root密码 图文教程

    前面我们介绍了Docker的内容:

    下面我们记录一下如何安装Mariadb/MySQL数据库。

    镜像库搜索安装Mariadb

    搜索Mariadb

    $ docker search mariadb
    NAME DESCRIPTION STARS OFFICIAL AUTOMATED
    mariadb MariaDB is a community-developed fork of MyS… 2848 [OK]
    bitnami/mariadb Bitnami MariaDB Docker Image 98 [OK]
    linuxserver/mariadb A Mariadb container, brought to you by Linux… 75
    toughiq/mariadb-cluster Dockerized Automated MariaDB Galera Cluster … 38 [OK]
    colinmollenhour/mariadb-galera-swarm MariaDb w/ Galera Cluster, DNS-based service… 26 [OK]
    panubo/mariadb-galera MariaDB Galera Cluster 23 [OK]
    lsioarmhf/mariadb ARMHF based Linuxserver.io image of mariadb 18
    million12/mariadb MariaDB 10 – ~60Mb Alpine UTF-8 16 [OK]
    webhippie/mariadb Docker images for MariaDB 15 [OK]
    bianjp/mariadb-alpine Lightweight MariaDB docker image with Alpine… 9 [OK]
    mariadb/server MariaDB Server is a modern database for mode… 9 [OK]
    centos/mariadb-101-centos7 MariaDB 10.1 SQL database server 9
    severalnines/mariadb A homogeneous MariaDB Galera Cluster image t… 7 [OK]
    centos/mariadb-102-centos7 MariaDB 10.2 SQL database server 5
    wodby/mariadb Alpine-based MariaDB container image with or… 4 [OK]
    tutum/mariadb Base docker image to run a MariaDB database … 4
    circleci/mariadb CircleCI images for MariaDB 3 [OK]
    rightctrl/mariadb Mariadb with Galera support 2 [OK]
    jonbaldie/mariadb Fast, simple, and lightweight MariaDB Docker… 2 [OK]
    kitpages/mariadb-galera MariaDB with Galera 2 [OK]
    tiredofit/mariadb-backup MariaDB Backup image to backup MariaDB/MySQL… 1 [OK]
    demyx/mariadb FROM webhippie/mariadb:latest 0
    jelastic/mariadb An image of the MariaDB SQL database server … 0
    ansibleplaybookbundle/mariadb-apb An APB which deploys RHSCL MariaDB 0 [OK]
    alvistack/mariadb Docker Image Packaging for MariaDB 0 [OK]

    安装Mariadb

    docker pull mariadb

    运行 Mariadb 镜像

    运行Mariadb服务

    docker run --name jmariadb -p 3306:3306 -d -v D:\mysqlData:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=jiloc mariadb
    • -e MYSQL_ROOT_PASSWORD 设置数据库root密码 jiloc
    • -v 映射数据库文件位置
    • --name 设置容器别名

    ============以下是配置Mariadb的config文件映射============

    查看容器ID

    docker ps -a

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    c63468060135 mariadb “docker-entrypoint.s…” 34 seconds ago Exited (1) 33 seconds ago jmariadb
    c948b4856671 nginx “nginx -g ‘daemon of…” 21 minutes ago Up 20 minutes 0.0.0.0:8081->80/tcp jnginx
    d593465ab743 bitnami/php-fpm “php-fpm -F –pid /o…” About an hour ago Up About an hour 9000/tcp jphp-fpm

    创建配置文件夹/文件,挂载数据

    创建 D:\DockerConfig\mysql ,我们将这个文件夹作为一会Docker将要映射的文件位置。

    docker run -d -p 3306:3306 --name mariadb -v D:\DockerConfig\mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jiloc mariadb

    测试连接

    docker ps -a

    确认数据库实例在运行,然后我们这里使用Navicat Premium 进行连接

  • Docker 安装 PHP 并配合 Nginx 运行 phpinfo

    Docker 安装 PHP 并配合 Nginx 运行 phpinfo

    搜索安装 PHP 镜像

    docker pull php

    查找Docker Hub上的php镜像

    $ docker search php
    NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    php                       While designed for web development, the PH...   1232      [OK]       
    richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
    phpmyadmin/phpmyadmin     A web interface for MySQL and MariaDB.          123                  [OK]
    eboraas/apache-php        PHP5 on Apache (with SSL support), built o...   69                   [OK]
    php-zendserver            Zend Server - the integrated PHP applicati...   69        [OK]       
    million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
    webdevops/php-nginx       Nginx with PHP-FPM                              39                   [OK]
    webdevops/php-apache      Apache with PHP-FPM (based on webdevops/php)    14                   [OK]
    phpunit/phpunit           PHPUnit is a programmer-oriented testing f...   14                   [OK]
    tetraweb/php              PHP 5.3, 5.4, 5.5, 5.6, 7.0 for CI and run...   12                   [OK]
    webdevops/php             PHP (FPM and CLI) service container             10                   [OK]
    ...

    这里我们拉取官方的镜像,标签为5.6-fpm

    $ docker pull bitnami/php-fpm

    等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为5.6-fpm的镜像。

    $ docker images
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
     bitnami/php-fpm            latest              84abb84939ff        About an hour ago   246MB
     php                        latest              f0357c41bff5        10 days ago         367MB
     nginx                      latest              719cd2e3ed04        2 weeks ago         109MB
     docker4w/nsenter-dockerd   latest              2f1c802f322f        8 months ago        187kB

    Nginx + PHP 部署

    Nginx 部署可以查看:Docker 安装 Nginx,一些 Nginx 的配置参考这篇文章。

    启动PHP容器

    $ docker run -d --name jphp-fpm -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc  bitnami/php-fpm

    命令说明:

    • –name jphp-fpm : 将容器命名为 jphp-fpm。
    • -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc 将主机中项目的目录 POWER_IDC 挂载到容器的data/wwwroot/poweridc

    查看php容器IP

    docker inspect --format '{{ .NetworkSettings.IPAddress }}' jphp-fpm

    配置Nginx的虚拟主机文件

    在该目录下修改 D:\DockerConfig\nginx\conf.d\poweridc.conf 文件,内容如下:

    server {
        listen       80;
        server_name  poweridc;
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
        location / {
            root   /data/wwwroot/poweridc;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            #root           html;
            fastcgi_pass   jphp-fpm:9000;#下面用了--link参数,hosts里会自动解析ip
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/poweridc/$fastcgi_script_name;
            include        fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    

    配置文件说明:

    • 172.17.0.3:9000: 表示 php-fpm 服务的容器地址,上面已经说明。

    启动Nginx

    docker run -d -p 8081:80 --name jnginx -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc -v D:\DockerConfig\nginx\conf.d\poweridc.conf:/etc/nginx/conf.d/poweridc.conf -v D:\DockerConfig\nginx\logs:/etc/nginx/logs --link jphp-fpm:bitnami/php-fpm nginx
    • -p 8081:80: 端口映射,把 nginx 中的 80 映射到本地的 8081 端口。
    • D:\wwwroot\POWER_IDC: 是本地 html 文件的存储目录,/data/wwwroot/poweridc 是容器内 html 文件的存储目录。
    • D:\DockerConfig\nginx\conf.d\poweridc.conf: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d/poweridc.conf 是容器内 nginx 配置文件的存储目录。

    运行php文件

    接下来我们在 D:\wwwroot\POWER_IDC 目录下创建 info.php,代码如下:

    <?php phpinfo();

    浏览器打开 http://poweridc:8081/info.php,显示如下:

  • Docker 安装 Nginx 映射本地文件 多虚拟主机 图文教程

    Docker 安装 Nginx 映射本地文件 多虚拟主机 图文教程

    Docker命令行如何安装Nginx?

    docker pull nginx 命令安装

    查找 Docker Hub 上的 nginx 镜像

    $ docker search nginx
    NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    nginx                     Official build of Nginx.                        3260      [OK]       
    jwilder/nginx-proxy       Automated Nginx reverse proxy for docker c...   674                  [OK]
    richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable ...   207                  [OK]
    million12/nginx-php       Nginx + PHP-FPM 5.5, 5.6, 7.0 (NG), CentOS...   67                   [OK]
    maxexcloo/nginx-php       Docker framework container with Nginx and ...   57                   [OK]
    ...

    这里我们拉取官方的镜像

    $ docker pull nginx

    等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像。

    $ docker images nginx
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              555bbd91e13c        3 days ago          182.8 MB

    Docker中如何启动Nginx实例?

    以下命令使用 NGINX 默认的配置来启动一个 Nginx 容器实例:

    $ docker run --name jiloc-nginx-test -p 8081:80 -d nginx
    • jiloc-nginx-test 容器名称。
    • the -d设置容器在在后台一直运行。
    • the -p 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口。

    执行以上命令会生成一串字符串,类似 0c3b0eaaa36657306e4586cfd613f5e37bbff0423cc3e58ee3683b4a1f1458f5,这个表示容器的 ID,一般可作为日志的文件名。

    我们可以使用 docker ps 命令查看容器是否有在运行:

    $ docker ps
    CONTAINER ID        IMAGE        ...               PORTS                  NAMES
    0c3b0eaaa366        nginx        ...      0.0.0.0:8081->80/tcp   jiloc-nginx-test

    PORTS 部分表示端口映射,本地的 8081 端口映射到容器内部的 80 端口。

    在浏览器中打开 http://127.0.0.1:8081/,效果如下:


    Docker部署nginx设置配置文件

    首先,创建目录 nginx, 用于存放后面的相关东西。

    $ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

    拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录,容器 ID 可以查看 docker ps 命令输入中的第一列:

    docker cp 0c3b0eaaa366:/etc/nginx/nginx.conf ~/nginx/conf
    • www: 目录将映射为 nginx 容器配置的虚拟目录。
    • logs: 目录将映射为 nginx 容器的日志目录。
    • conf: 目录里的配置文件将映射为 nginx 容器的配置文件。
    • :ro 只读

    部署命令

    $ docker run -d -p 8082:80 --name jiloc-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v ~/nginx/logs:/var/log/nginx nginx

    已有源码 Windows 本地映射,启动Docker开启虚拟主机

    docker run -d -p 8081:80 --name jnginx -v D:\wwwroot\POWER_IDC:/data/wwwroot/poweridc -v D:\DockerConfig\nginx\conf.d\poweridc.conf:/etc/nginx/conf.d/poweridc.conf nginx

    命令说明:

    • -p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
    • –name jiloc-nginx-test-web:将容器命名为 jiloc-nginx-test-web。
    • -v ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
    • -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
    • -v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

    启动以上命令后进入 ~/nginx/www 目录:

    $ cd ~/nginx/www

    创建 index.html 文件,内容如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(laoji.org)</title>
    </head>
    <body>
        <h1>我的第一个标题</h1>
        <p>我的第一个段落。</p>
    </body>
    </html>

    输出结果为:

    我们这里使用的是自定义域名,设置方法请看:

    Linux Windows MacOS 等系统中hosts的原理及作用

    相关命令

    如果要重新载入 NGINX 可以使用以下命令发送 HUP 信号到容器:

    $ docker kill --signal=SIGHUP container-name

    重启 NGINX 容器命令:

    $ docker restart container-name
  • Docker中快速删除所有容器

    Docker中快速删除所有容器

    查看运行容器

    docker ps

    查看所有容器

    docker ps -a

    进入容器

    其中字符串为容器ID:

    docker exec -it d27bd3008ad9 /bin/bash

    停用全部运行中的容器:

    docker stop $(docker ps -q)

    删除全部容器:

    docker rm $(docker ps -aq)

    一条命令实现停用并删除容器:

    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
WeChat
↑