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