https://mp.weixin.qq.com/s/F-yv_vvCO_qMlt_e_iuYlA
1、安装Docker
1.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置docker yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker
yum install -y docker-ce
4.启动docker
systemctl daemon-reload
systemctl enable docker --now
systemctl restart docker
图1 docker安装引擎
mkdir /etc/docker -p
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.credclouds.com",
"https://k8s.credclouds.com",
"https://quay.credclouds.com",
"https://gcr.credclouds.com",
"https://k8s-gcr.credclouds.com",
"https://ghcr.credclouds.com",
"https://do.nark.eu.org",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.1panel.live",
"https://docker.rainbond.cc"
],
"data-root": "/etc/docker"
}
EOF
systemctl daemon-reload
systemctl restart docker
图2 配置镜像加速器
图3 优化效果验证
2、安装Portainer容器可视化管理
mkdir -p /usr/local/docker/portainer
docker run -it -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/docker/portainer:/data portainer/portainer
图4 安装portainer
访问地址:http://10.0.0.100:9000
图5 portainer可视化界面
图6 创建容器
图7 生命周期管理
3、利用Dockerfile新建一个容器新镜像
mkdir custom_centos && cd custom_centos
# 基础镜像
FROM centos:7
# 设置学号变量
ARG STUDENT_ID=2024031390
# 1. 更换为阿里云YUM源(解决网络问题)
RUN rm -f /etc/yum.repos.d/*.repo && \
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo && \
sed -i 's|^#baseurl|baseurl|g' /etc/yum.repos.d/CentOS-Base.repo && \
sed -i 's|^mirrorlist|#mirrorlist|g' /etc/yum.repos.d/CentOS-Base.repo && \
sed -i 's|//[^/]*/|//mirrors.aliyun.com/|g' /etc/yum.repos.d/CentOS-Base.repo
# 2. 安装基础工具(分步执行+错误处理)
RUN yum makecache fast && \
yum install -y vim && \
yum install -y openssh-server && \
yum install -y net-tools bind-utils iproute lsof telnet traceroute nc tcpdump wget curl rsync
# 3. 配置SSH
RUN ssh-keygen -A && \
echo "root:${STUDENT_ID}" | chpasswd && \
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config && \
sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
# 4. 清理缓存减小镜像大小
RUN yum clean all && rm -rf /var/cache/yum
# 设置容器入口
CMD ["/usr/sbin/sshd", "-D"]
# 暴露SSH端口
EXPOSE 22
docker build -t 2024031390:v1 --build-arg STUDENT_ID=2024031390 .
图8 新建新镜像
# 启动测试容器
docker run -d -p 2222:22 --name test_ssh 2024031390:v1
# 测试SSH登录 (密码:2024031390)
ssh root@localhost -p 2222
# 测试文件传输 (宿主机→容器)
echo "hello test" > test.txt
docker cp /root/test.txt test_ssh:/root/
# 测试文件传输 (容器→宿主机)
docker exec test_ssh touch /root/a.txt
docker cp test_ssh:/root/a.txt ./
图9 ssh登陆容器
图10 容器和宿主机之间互传文件
在node2-2024031390部署harbor
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
tar xvf harbor-offline-installer-v2.5.0.tgz
cd harbor
# 修改配置文件
cp harbor.yml.tmpl harbor.yml
sed -i 's/hostname: reg.mydomain.com/hostname: node2-2024031390/' harbor.yml
sed -i 's/port: 80/port: 8080/' harbor.yml
./install.sh
图11 harbor搭建
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.credclouds.com",
"https://k8s.credclouds.com",
"https://quay.credclouds.com",
"https://gcr.credclouds.com",
"https://k8s-gcr.credclouds.com",
"https://ghcr.credclouds.com",
"https://do.nark.eu.org",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.1panel.live",
"https://docker.rainbond.cc"
],
"data-root": "/etc/docker",
"insecure-registries": ["10.0.0.120:8080"]
}
EOF
systemctl restart docker
docker login 10.0.0.120:8080 -u admin -p Harbor12345
docker tag 2024031390:v1 10.0.0.120:8080/library/2024031390:v1
docker push 10.0.0.120:8080/library/2024031390:v1
图12 将镜像推送到Harbor仓库
图13 harbor查看镜像
4、在node1上新建一个容器,通过与宿主机的端口1000.1001,1002映射分别访问“首页是班级+姓名”的个性化网站、“小鸟飞飞”html5游戏网站和“Nginx默认首页”网站。
mkdir -p /home/2024031390/nginx/{sites,conf}
mkdir /home/2024031390/nginx/sites/personal
cat > /home/2024031390/nginx/sites/personal/index.html <<EOF
<!DOCTYPE html>
<html>
<head>
<title>my site</title>
</head>
<body>
<h1>I am 2024031390 , welcome to cloud computing class</h1>
</body>
</html>
EOF
mkdir /home/2024031390/nginx/sites/game
cd /home/2024031390/nginx/sites/game
unzip xiaoniaofeifei.zip
cat > /home/2024031390/nginx/conf/default.conf <<EOF
# 默认网站 (1002端口)
server {
listen 1002;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
# 个人网站 (1000端口)
server {
listen 1000;
server_name localhost;
location / {
root /usr/share/nginx/personal;
index index.html index.htm;
}
}
# 游戏网站 (1001端口)
server {
listen 1001;
server_name localhost;
location / {
root /usr/share/nginx/game;
index index.html index.htm;
}
}
EOF
docker run -d \
--name nginx-multisite \
-p 1000:1000 \
-p 1001:1001 \
-p 1002:1002 \
-v /home/2024031390/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \
-v /home/2024031390/nginx/sites/personal:/usr/share/nginx/personal \
-v /home/2024031390/nginx/sites/game:/usr/share/nginx/game \
nginx:latest
图14 多端口多网站访问实例启动
在物理机上打开浏览器测试验证:
图15 nginx默认首页
图16 个人网站
图17 小鸟飞飞的小游戏
5、通过docker-compose编排工具构建并运行一个综合应用程序,至少含有2个关联容器。
mkdir wordpress
cd wordpress
vi docker-compose.yml
version: '3.8'
services:
# WordPress 前端服务
wordpress:
image: wordpress:latest
container_name: wp-app
restart: always
ports:
- "8080:8081"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: Admin@123
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
depends_on:
- db
networks:
- app-network
# MySQL 数据库服务
db:
image: mysql:8.0
container_name: wp-db
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: Admin@123
MYSQL_ROOT_PASSWORD: Admin@123
volumes:
- db_data:/var/lib/mysql
networks:
- app-network
# 定义存储卷
volumes:
wordpress_data:
db_data:
# 定义网络
networks:
app-network:
driver: bridge
docker-compose up -d
docker-compose ps
图18 容器启动
访问应用程序:
http://10.0.0.100:8080
图19 wordpress站点
评论 (0)