Bootstrap

docker 实战练习1

安装部署docker 和docker-compose

#卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 官方yum源
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
# 阿里云yum源
sudo yum-config-manager \
    --add-repo \
  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker引擎(指定20.10.24版本)
yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io

# 启动Docker服务
sudo systemctl start docker
# 设置Docker开机自启
sudo systemctl enable docker 
#查看Docker服务的状态
sudo systemctl status docker

#添加镜像加速器
# 创建目录
mkdir -p /etc/docker
# 复制内容
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://2yzmpomi.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn",
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://docker.1panel.live/",
        "https://noohub.ru",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud"
    ]
}
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
EOF
# 重新加载配置
systemctl daemon-reload
# 重启Docker
systemctl restart docker

#通过运行hello-world 映像来验证是否正确安装了Docker Engine 。
sudo docker run hello-world

#显示 Docker 系统信息
docker info

#安装docker-compose 编排容器工具
#打开github 下载地址:https://github.com/docker/compose/releases/
#上传服务器/usr/bin/目录下面 并改名为docker-compose
mv 文件 /usr/bin/docker-compose   
#赋予执行权限
sudo chmod +x /usr/bin/docker-compose
#检查是否安装成功
docker-compose -v

命令版本

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y 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 install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://mirrors.tuna.tsinghua.edu.cn",
        "http://mirrors.sohu.com",
        "https://ustc-edu-cn.mirror.aliyuncs.com",
        "https://2yzmpomi.mirror.aliyuncs.com",
        "https://ccr.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.awsl9527.cn",
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://docker.1panel.live/",
        "https://noohub.ru",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud"
    ]
}
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
EOF
systemctl daemon-reload
systemctl restart docker
sudo docker run hello-world

docker-compose编排mysql 、tomcat 、nginx 、redis脚本

#!/bin/bash

mkdir my_project
cd my_project

cat > docker-compose.yml <<EOF
version: '3'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: mydatabase
    volumes:
      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "3306:3306"
  tomcat:
    image: tomcat:9.0
    container_name: tomcat
    volumes:
      - ./tomcat/webapps:/usr/local/tomcat/webapps
    ports:
      - "8080:8080"
    depends_on:
      - mysql
  nginx:
    image: nginx:latest
    container_name: nginx
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    ports:
      - "8084:8084"
    depends_on:
      - tomcat
  redis:
    image: redis:latest
    container_name: redis
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "6379:6379"
EOF

mkdir -p nginx
cat > nginx/default.conf <<EOF
server {
    listen 8084;
    server_name localhost;
    location / {
        proxy_pass http://tomcat:8080;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}
EOF

mkdir -p tomcat/webapps/ROOT/
cat > tomcat/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello World</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>
EOF

mkdir -p mysql
cat > mysql/init.sql <<EOF
CREATE DATABASE IF NOT EXISTS mydatabase;
USE mydatabase;
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL
);
EOF

mkdir -p redis
cat > redis/redis.conf <<EOF
bind 0.0.0.0
protected-mode no
port 6379
EOF

docker-compose up -d

项目搭建

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#查看当前防火墙开放的端口
sudo firewall-cmd --list-ports
#将端口 8081 添加到防火墙的 public 区域,并且设置为永久生效。
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重新加载防火墙配置,使新的规则生效。
sudo firewall-cmd --reload

#关闭selinux 安全策略
# 临时
setenforce 0  
# 永久 注意需要重启才能生效。
sed -i 's/enforcing/disabled/' /etc/selinux/config  

#进入tomcat ROOT目录
cd tomcat/webapps/ROOT/
#在里面部署自己的项目

浏览器访问 主机IP:8080   就可以访问自己搭建的项目  

;