当前位置: 首页 > article >正文

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   就可以访问自己搭建的项目  


http://www.kler.cn/a/533988.html

相关文章:

  • 消费kafka消息示例
  • 使用Python和TensorFlow/Keras构建一个简单的CNN模型来识别手写数字
  • [leetcode]双指针算法的使用
  • 基于springboot的体质测试数据分析及可视化设计
  • HTML排版标签、语义化标签、块级和行内元素详解
  • C++游戏开发实战:从引擎架构到物理碰撞
  • 数码分享官 | 华硕灵耀14 双屏 2025,科技与美学的完美碰撞
  • 2025年02月05日Github流行趋势
  • 冒泡排序的原理及优化
  • 【3分钟极速部署】在本地快速部署deepseek
  • Linux中系统相关指令(一)
  • 国防科大:双目标优化防止LLM灾难性遗忘
  • uniapp引入cloudflare人机验证
  • Docker深度解析:Docker 安装
  • 【蓝桥杯嵌入式】LED
  • C#中堆和栈的区别
  • 5. scala高阶之traits
  • C# 程序计算圆的面积(Program to find area of a circle)
  • Git、Github和Gitee完整讲解:丛基础到进阶功能
  • 鸿蒙Harmony-Refresh 容器组件
  • 【kafka的零拷贝原理】
  • [Java]函数式编程
  • 基于微信小程序的居住证申报系统设计与实现(LW+源码+讲解)
  • SpringBoot扩展篇:@Scope和@Lazy源码解析
  • Scala语言的人工智能
  • 搭建集成开发环境PyCharm