惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Fortinet All Blogs
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
小众软件
小众软件
有赞技术团队
有赞技术团队
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
AWS News Blog
AWS News Blog
C
Cisco Blogs
美团技术团队
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
W
WeLiveSecurity
D
DataBreaches.Net
博客园 - 司徒正美
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
Google DeepMind News
Google DeepMind News
T
The Blog of Author Tim Ferriss
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Vercel News
Vercel News
月光博客
月光博客
T
Tailwind CSS Blog
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements

博客园 - zzzp0755

Docker集群 + 运维 + 镜像仓库 linux常用命令 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为:010f28a5,但实际为:0xcaf47a0c)。 ABP vNext学习 及问题记录 winform datagridview 勾选复选框 和点击单元格事件区分 Vol.NET 开发步骤 .net6.0 新知识学习 英语2025-02 FLOAT:浮点数值数据的大致数值数据类型 Dev 案例 css 积累 20240423 JSON.NET JObject键比较不区分大小写 jsfiddle.net js在线调试 sql 时间日期函数 ele admin plus 添加dev插件 .NET Core Web API 实现图形验证码 DataGridView 保存编辑的行 .net webapi 返回类型
Docker安装和应用
zzzp0755 · 2026-03-07 · via 博客园 - zzzp0755

1、安装

​ 含义:在Centos7.6 安装Docker

docker安装
1、安装docker仓库
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo

2、安装docker
yum -y install docker-ce

3、启动docker
systemctl start docker

4、开机自启动docker
systemctl enable docker

镜像操作(image)

镜像仓库:docker images

创建镜像:docker build -t docker1 .

运行镜像:docker run -p5001:80 docker1 (每运行一次就会产生一个容器,通过docker ps -a查看)

查看镜像详细:docker inspect

查看所有容器:docker ps -a

删除镜像:docker image rm 18e064c69c6b 镜像Id(删除前要先删除镜像的所有容器:docker 【docker ps -a 出来关联的容器Id】)

下载镜像:docker pull nginx(默认镜像仓库无法访问,需用的下边的配置)

镜像仓库源:vi /etc/docker/daemon.json

{
 "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}

重启docker: systemctl restart docker

容器操作(container)
容器概念:运行的Linux+运行的webapi;
镜像概念:静态的Linux+静态的webapi
镜像和容器的关系:一对多关系。一个镜像多次运行,可以得到多个容器,例如:类和对象的关系,一个类多次new可以得到多个对象。
应用:部署集群 的效率提高

容器命令说明:docker container
运行容器:docker container run -p5001:80 docker3 (前台运行) docker container run -d -p5001:80 docker3(后台运行)。(运行多次即发布多个webapi)
关闭容器:docker container stop 1f63009390db(通过docker container ls查找id)
开始容器docker container start 1f63009390db(运行一个已存在且关闭的的容器)
删除容器:docker container rm 1f63009390db(通过docker container ls查找id)

正在运行的容器:docker container ls
容器的详细信息:docker container inspect 0ba4f92a0c3b
查看所有容器:docker container ls -a
进入容器:docker container exec -it 1f63009390db /bin/bash(退出容器:exit)

容器的日志:docker container logs 5eb9ab5b639d 实时显示日志:docker container logs -f 5eb9ab5b639d

关系:
1、镜像和容器:一对多
2、容器和项目:一对一
目标实现项目部署
3、Linux(5002)+容器(80)+项目(80)关系:http://192.168.40.168:5002/weatherforecast
容器端口(80)和项目端口(80)的端口必须一致

Docker文件
含义:配置构造镜像的命令 Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:8.0.0 #父镜像【项目运行环境】
WORKDIR /publish #工作目录【运行项目的目录】
EXPOSE 80 #http协议 容器端口【端口和项目端口一致】
EXPOSE 443 #https协议 容器端口【端口和项目端口一致】
COPY publish/ /publish #复制项目文件 到 容器的/publish目录
ENV ASPNETCORE_URLS http://+:80 #项目的环境变量:项目的url,必须容器端口一致
ENTRYPOINT ["dotnet", "testAPI.dll"] #运行项目的指令

 FROM:指定基础镜像(FROM是必备的指令,并且必须为第一条指令)。

  RUN: 用来执行命令行命令。其基本格式:

      shell格式: RUN  <命令>  ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ \ ’ 换行,使用‘ && ’执行下一条命令。一般使用此种格式;

      exec格式: RUN  <"可执行文件", "参数1", "参数2">,此种方式像是函数调用中的格式;

  COPY:  复制文件。 其基本格式:

      格式1:COPY <源路径>...<目标路径>

      格式2:COPY [“<源路径1>”,....."<目标路径>"]

  ADD: 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压;

  CMD:容器启动命令。其基本格式:

      shell格式: CMD <命令>

      exec格式: CMD ["可执行文件", "参数1", "参数2"...]

      参数列表格式: CMD [“参数1”, “参数2”...],在指定了ENTRYPOINT指令后,用CMD指定具体的参数

  ENTRYPOINT: 入口点。其基本格式分为exec和shell,

      ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数。ENTRYPOINT在运行中可以替代,不过比CMD繁琐,需要通过docker run 的参数--entrypoint 来指定。当指定了ENTRYPOINT后,CMD的含义就发生了改变,不在是直接运行其命令,而是将CMD的内容作为参数传递给ENTRYPOINT指令。其执行时就变成了:  <ENTRYPOINT> "<CMD>"

  ENV: 设置环境变量。(都可以使用这里使用的变量)其基本格式:

      格式1:ENV <key> <value>

      格式2:ENV <key1>=<value1> <key2>=<value>...

  ARG: 构建参数。构建参数和ENV的效果一样,都是设置环境变量,所不同的是ARG所构建的环境变量在将来容器运行时是不存在的。其基本格式:

      格式1: ARG <参数名> [=<默认值>]

      格式2: 该默认值可以在构建命令 docker build  中用 --build-arg <参数名>=<值> 来覆盖

  VOLUME: 定义匿名卷。 其基本格式:

      格式1: VOLUME ["<路径1>", "<路径2>"...]

      格式2: VOLUME <路径>

  EXPOSE:  暴露端口。EXPOSE指令是声明运行时容器所提供的端口,在启动容器时不会在因为这个声明而开启端口。 其基本格式:

      格式1: EXPOSE <端口1> [<端口2>...]

  WORKDIR: 指定工作目录。其基本格式:

      格式1: WORKDIR <工作目录路径>

  USER: 指定当前用户。USER是帮助你切换到指定用户。 其基本格式:

      格式1: USER <用户名>

  HEALTCHECK: 健康检查,判断容器的状态是否正常。 其基本格式:

      格式1: HEALTCHECK [选项] CMD <命令> :设置检查容器健康状况的命令

      格式2: HEALTCHECK NONE: 如果基础镜像有健康检查指令,使用此格式可以屏蔽掉其健康检查指令

Linux 运行.net8项目

docker docker1.dll --urls="http://+5006;http://+5007"

  无法访问时候,关闭防火墙 或者 防火墙开放端口

有状态:有状态数据存在本地,用数据挂载的方式部署
无状态:无状态数据存在数据库

镜像仓库
作用:实现镜像复用,防止创建重复镜像

自定义镜像
也就是手动创建镜像
构建镜像: docker build -t rmcore.
运行容器:docker run -d -p 2020:80 2021:443 rmcore(后台运行端口2020)
停止容器:docker stop rmcore
启动容器:docker start rmcore




容器编排 docker-compose

批量创建多个镜像,和多个容器就是docker-compose

目的:是方便镜像和容器的管理

使用docker-compose构建镜像

version: '3'
services:
  rmcore1:
    build: /root/ydt/nginx
    ports:
     - 8088:80
     - 8089:443
  nginx2:
    build: /root/ydt/productservice
    ports:
     - 8090:80	

运行docker-compose.yml文件

​ 1、切换docker-compose.yml目录

​ 2、运行yml文件

​ docker-compose up -d

docker network网络

为什么要进行容器互联
​ 容器之间由于是隔离的,导致网络是不通的。
​ 使用网络network来解决,内部使用Bridge桥接网络来解决!
在docker-compose.yml文件内使用network

version: '3'
services:
  ydtnginx:
    build: /root/ydt/nginx
    ports:
     - 8088:80
    networks:
     - microservice
  productservice:
    build: /root/ydt/productservice
    ports:
     - 8090:80
    networks:
     - microservice
networks:
 microservice:
      external: true

更新compose.yml配置文件
docker-compose up -d

数据挂载
docker volume数据卷
数据卷就是将容器的数据存储到主机上,方便进行持久化存储
先创建nginx.conf文件

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        proxy_pass  http://productservice:80;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
   }
 }

  然后在docker-compose.yml文件中配置

version: '3'
services:
  ydtnginx:
    build: /root/ydt/nginx
    ports:
     - 8088:80
    networks:
     - microservice
    volumes:
     - /root/ydt/compose/nginx.conf:/usr/local/nginx/conf/nginx.conf
  productservice:
    build: /root/ydt/productservice
    ports:
     - 8090:80
    networks:
     - microservice
networks:
 microservice:
      external: true

备注:

1、volumes:数据卷指令

2、/root/ydt/compose/nginx.conf :Linux主机nginx.conf文件地址

3、/usr/local/nginx/conf/nginx.conf :nginx容器nginx.conf地址

总结:涉及的文件:yaml文件 、Dockerfile、docker-compose.yaml