admin

Centos8安装docker/docker-compose并快速部署lnmp

admin docker技术 2023-07-12 122949浏览 0

Centos8安装docker

Linux 系统 Redhat 8与 Centos 8 以后默认 是安装 podman 作为容器管理工具,但是由于 podman 与 docker 的依赖 有冲突,安装了 podman 的 系统无法直接安装 docker。 如果需要安装 docker 需要先删除 podman 及 buidlah 。 然后再安装 docker。 具体步骤如下:


1.进到 docker 官网 ,根据官网指南找到 相应系统的安装 源,redhat 和 centos x86 系统安装指南都可以使用下面这个链接:https://docs.docker.com/engine/install/centos/


2.安装 yum-utils ,如果是非 root 用户,可能需要有 sudo 权限,使用命令:

sudo yum install -y yum-utils

3. 输入下面的命令,生成 docker.repo 仓库文件:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.卸载 podman 及 buildah

  podman 与 docker依赖的冲突问题 就可以成功安装 docker 

sudo yum erase -y pomdan 

sudo yum erase -y buildah

5.输入命令安装 docker engine

 sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6. 启动docker容器服务

 sudo systemctl start docker

Centos8安装docker-compose

官方文档:https://docs.docker.com/compose/install/

# 下载docker compose(Linux版本)

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 增加执行权限

sudo chmod +x /usr/local/bin/docker-compose

# 成功检查

docker-compose -v

centos8 docker-compose安装lnmp

执行docker compose准备步骤

1、准备好需要修改的配置文件(比如nginx.conf等),如果需要自己构建Dockerfile文件,也请准备好Dockerfile

2、在 docker-compose.yml 中定义好各个容器的相关配置

3、执行docker-compose up -d命令,docker compose会帮你完成一整套拉取镜像/构建镜像,启动容器等操作。

docker-compose.yml是docker compose用来配置容器应用的配置文件,默认就叫docker-compose.yml,最好是放在当前操作的目录下,当然也可以单独指定文件路径。


docker compose的常用命令

#启动并后台运行所有的服务 

docker-compose up  -d 

#列出项目中目前的所有容器 

docker-compose ps 

#停止某个服务 

docker-compose stop 服务名 

#启动某个服务 

docker-compose start 服务名 

#停止并删除容器、网络、卷、镜像 

docker-compose down


nginx配置准备

# nginx挂载目录(目录根据自身情况修改)

mkdir /opt/lnmp && cd /opt/lnmp && mkdir -p mysql/data

mkdir {nginx,www} && cd nginx &&  && mkdir conf && cd conf

# nginx默认配置文件

vi default.conf

server {
    listen       80;
    root   /usr/share/nginx/html;
    index   index.html index.htm index.php;
    # 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;
    }
    location / {
        index  index.html index.htm index.php ;
        try_files $uri $uri/ /index.php?$query_string;
        autoindex  on;
    }
    location ~ \.php$ {
        #php73是容器命名
        fastcgi_pass   php73:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
    }
}

在docker-compose.yml文件中定义好我们需要的nginx,php和mysql相关的配置,如下:

cd /opt/lnmp

vi docker-compose.yml

#定义docker compose yml版本
version: "3"  
#定义我们的服务对象
services:   
#自定义的服务名称
  nginx:    
     #镜像名称,默认拉取本地镜像,没有的话从远程获取
     image: nginx:latest
     #自定义容器的名称
     container_name: c_nginx
     #将宿主机的80端口映射到容器的80端口
     ports:
      - "80:80"
     #将宿主机的~/lnmp/www目录和容器的/usr/share/nginx/html目录进行绑定,并设置rw权限
     #将宿主机的~/lnmp/nginx/conf/default.conf和容器的/etc/nginx/conf.d/default.conf进行绑定
     volumes:
      - /opt/lnmp/www/:/usr/share/nginx/html/:rw
      - /opt/lnmp/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
     #设置环境变量,当前的时区
     environment:
      TZ: "Asia/Shanghai"
     #容器是否随docker服务启动重启
     restart: always
     #容器加入名为lnmp的网络
     networks:
      - lnmp
  php:
    image: bitnami/php-fpm:7.3
    container_name: php73
    volumes:
      - /opt/lnmp/www/:/var/www/html/:rw
    restart: always
    networks:
      - lnmp
  mysql:
    image: mysql:5.7
    container_name: mysql57
    ports:
      - "3306:3306"
    volumes:
      - /opt/lnmp/mysql/data:/var/lib/mysql/:rw
    restart: always
    networks:
      - lnmp
    environment:
      MYSQL_ROOT_PASSWORD: "mhsj.net"
      TZ: "Asia/Shanghai"
networks:   
  #创建了一个自定义的网络叫做lnmp
  lnmp:

执行docker-compose up -d命令

image.png


测试mysql连接

cat /opt/lnmp/www/index.php


<?php
try {
    $pdo = new PDO("mysql:host=mysql57","root","hellowin995120");
    $pdo = null;
    print "连接成功";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

image.png

版权声明

本站《作品展示》类文章均为原创,转载必须注明出处,技术分享类文章部分来源于网络,版权归原作者所有,若侵权请留言。