Docker容器的配置和管理

奥黛丽·逐爱者
2025-07-06 / 0 评论 / 2 阅读 / 正在检测是否收录...

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 -psudo 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. 配置SSHRUN 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 \  -1000:1000 \  -1001:1001 \  -1002:1002 \  -/home/2024031390/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf \  -/home/2024031390/nginx/sites/personal:/usr/share/nginx/personal \  -/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.ymlversion: '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

评论 (0)

取消