Docker-学习总结(集群管理-Docker Stack+Portainer图形)

文章目录

  • Docker Stack
    • 概念
    • 命令
  • Docker stack 实践
    • 实践环境
    • 实践过程
      • 部署一个简单服务
    • 添加监控visualizer
    • 滚动更新
    • 资源控制
    • 图形界面portainer
      • 安装前准备
      • 安装portainer

Docker Stack

概念

  • 技术由来:Docker Swarm在大规模场景下的多服务部署和管理是一件很难的事情,为解决此问题,产生了Docker stack,
    Docker Stack基于Docker Swarm之上来完成对多服务进行部署和管理的
  • 实现方式:通过使用与Compose一样的yml文件中定义应用,然后通过 docker stack deploy 命令完成部署和管理
  • 体系结构:Stack 位于 Docker 应用层级的最顶端。Stack 基于服务进行构建,而服务又基于容器
  • Stack与Compose区别:
    • Docker Stack不支持bulid指令,使用的镜像必须是构建好的,而Docker Compose可以使用,相对而言Docker Compose更适合开发使用
    • Docker Stack是集成在Docker引擎中的,直接使用命令即可,而Docker Compose 则是一个Python项目,使用Docker API规范操作容器
    • Docker Stack不支持version 2的yml文件,至少version 3以上。而Docker Compose 对version 2或3都可以处理
    • Docker Stack 更适合处理多服务也能处理单机服务,而Docker Compose 仅能处理单机服务,所以Docker Stack 可以把Docker Compose的工作都处理了,占据了主导地位。

命令

[root@node1 reg.mydocker.com]# docker stack --help
#格式
Usage:	docker stack [OPTIONS] COMMAND
#Docker stack任务管理
Manage Docker stacks
#选项
Options:
      --orchestrator string   Orchestrator to use (swarm|kubernetes|all)|选择协调器是swarm还是k8s或者2者
#子命令
Commands:
  deploy      Deploy a new stack or update an existing stack| 加载一个新的stack任务或者更新某一stack任务
  ls          List stacks|显示所有stack任务的列表
  ps          List the tasks in the stack|列出某一个stack的详细任务
  rm          Remove one or more stacks|删除一个或者多个stack任务
  services    List the services in the stack|列出某一个stack的所有服务

Docker stack 实践

实践环境

主机 IP 作用
node1 192.168.27.11 安装有Docker(18.09.6)、集群管理节点、可访问私有仓库
node2 192.168.27.12 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库
node3 192.168.27.13 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库
repository 192.168.27.12 搭建有harbor私有仓库,作为集群操作中的镜像使用仓库

实践过程

部署一个简单服务

官方compose文件模板:https://docs.docker.com/compose/compose-file/

  1. 制作一个yml文件,开启一个web服务,使用nginx容器,生成3个副本,自定义卷与网络
[root@node1 stack]# vim docker-stack.yml
version: '3'
services:
  web:
    image: library/nginx
    ports:
      - "80:80"
    volumes:
      - web-data:/usr/share/nginx/html
    networks:
      - vm_net
    deploy:
      replicas: 3
volumes:
  web-data:
networks:
  vm_net:
  1. stack 运行、查看、测试
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
prots Additional property prots is not allowed
[root@node1 stack]# vim docker-stack.yml
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
Creating network my_cluster_vm_net
Creating service my_cluster_web
[root@node1 stack]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
e0eo4mb2xnxa        my_cluster_web      replicated          3/3                 nginx:latest        *:80->80/tcp
[root@node1 stack]# docker service ps my_cluster_web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE       ERROR               PORTS
uvq3ayobwam1        my_cluster_web.1    nginx:latest        node1               Running             Running 17 seconds ago
ar53a9v7o94t        my_cluster_web.2    nginx:latest        node3               Running             Running 16 seconds ago
ulji2jzh25qq        my_cluster_web.3    nginx:latest        node2               Running             Running 16 seconds ago
[root@node1 stack]# curl 192.168.27.11
<!DOCTYPE html>


Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>title>
<style>
    body <span class="token punctuation">{</span>
        width: 35em<span class="token punctuation">;</span>
        margin: 0 auto<span class="token punctuation">;</span>
        font<span class="token operator">-</span>family: Tahoma<span class="token punctuation">,</span> Verdana<span class="token punctuation">,</span> Arial<span class="token punctuation">,</span> sans<span class="token operator">-</span>serif<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<<span class="token operator">/</span>style>
<<span class="token operator">/</span>head>
<body>
<h1>Welcome to nginx<span class="token operator">!</span><<span class="token operator">/</span>h1>
<p><span class="token keyword">If</span> you see this page<span class="token punctuation">,</span> the nginx web server is successfully installed and
working<span class="token punctuation">.</span> Further configuration is required<span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><span class="token keyword">For</span> online documentation and support please refer to
<a href=<span class="token string">"http://nginx.org/"</span>>nginx<span class="token punctuation">.</span>org<<span class="token operator">/</span>a><span class="token punctuation">.</span><br<span class="token operator">/</span>>
Commercial support is available at
<a href=<span class="token string">"http://nginx.com/"</span>>nginx<span class="token punctuation">.</span>com<<span class="token operator">/</span>a><span class="token punctuation">.</span><<span class="token operator">/</span>p>

<p><em>Thank you <span class="token keyword">for</span> <span class="token keyword">using</span> nginx<span class="token punctuation">.</span><<span class="token operator">/</span>em><<span class="token operator">/</span>p>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <h2>添加监控visualizer</h2> 
  <ol> 
   <li>修改yml文件</li> 
  </ol> 
  <pre><code class="prism language-powershell">version: <span class="token string">'3'</span>
services:
  web:
    image: library<span class="token operator">/</span>nginx
    ports:
      <span class="token operator">-</span> <span class="token string">"80:80"</span>
    volumes:
      <span class="token operator">-</span> web<span class="token operator">-</span><span class="token keyword">data</span>:<span class="token operator">/</span>usr<span class="token operator">/</span>share<span class="token operator">/</span>nginx<span class="token operator">/</span>html
    networks:
      <span class="token operator">-</span> vm_net
    deploy:
      replicas: 6										<span class="token comment">#副本扩容为6</span>
  visualizer:											<span class="token comment">#添加监控visualizer,docker官方模板</span>
    image: dockersamples<span class="token operator">/</span>visualizer
    ports:
      <span class="token operator">-</span> <span class="token string">"8080:8080"</span>
    stop_grace_period: 1m30s
    volumes:
      <span class="token operator">-</span> <span class="token string">"/var/run/docker.sock:/var/run/docker.sock"</span>
    deploy:
      placement:
        constraints: <span class="token namespace">[node.role == manager]</span>
volumes:
  web<span class="token operator">-</span><span class="token keyword">data</span>:
networks:
  vm_net:
</code></pre> 
  <ol start="2"> 
   <li>stack重载运行,查看</li> 
  </ol> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker stack deploy -c docker-stack.yml my_cluster</span>
Creating network my_cluster_default
Updating service my_cluster_web <span class="token punctuation">(</span>id: e0eo4mb2xnxagz9tfj323yye1<span class="token punctuation">)</span>
Creating service my_cluster_visualizer
<span class="token comment"># 更新成功</span>
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker service ls</span>
ID                  NAME                    MODE                REPLICAS            IMAGEPORTS
vh66myojbstz        my_cluster_visualizer   replicated          1<span class="token operator">/</span>1                 dockersamples<span class="token operator">/</span>visualizer:latest<span class="token operator">*</span>:8080<span class="token operator">-</span>>8080<span class="token operator">/</span>tcp
e0eo4mb2xnxa        my_cluster_web          replicated          6<span class="token operator">/</span>6                 nginx:latest<span class="token operator">*</span>:80<span class="token operator">-</span>>80<span class="token operator">/</span>tcp
<span class="token comment"># 开启2个服务</span>
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker service ps my_cluster_web</span>
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE       ERROR               PORTS
uvq3ayobwam1        my_cluster_web<span class="token punctuation">.</span>1    nginx:latest        node1               Running             Running 14 minutes ago
ar53a9v7o94t        my_cluster_web<span class="token punctuation">.</span>2    nginx:latest        node3               Running             Running 14 minutes ago
ulji2jzh25qq        my_cluster_web<span class="token punctuation">.</span>3    nginx:latest        node2               Running             Running 14 minutes ago
w0vgln16y86q        my_cluster_web<span class="token punctuation">.</span>4    nginx:latest        node1               Running             Running 2 minutesago
i8zdnfyamheh        my_cluster_web<span class="token punctuation">.</span>5    nginx:latest        node3               Running             Running 2 minutesago
j5pjbv1yqnso        my_cluster_web<span class="token punctuation">.</span>6    nginx:latest        node2               Running             Running 2 minutesago
<span class="token comment">#副本数量为6</span>
</code></pre> 
  <ol start="3"> 
   <li>查看web页面<br> <a href="http://img.e-com-net.com/image/info8/89c563b7ffb94c199201ca54f9a5dc4e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/89c563b7ffb94c199201ca54f9a5dc4e.jpg" alt="Docker-学习总结(集群管理-Docker Stack+Portainer图形)_第1张图片" width="477" height="479" style="border:1px solid black;"></a></li> 
  </ol> 
  <h2>滚动更新</h2> 
  <ol> 
   <li>修改yml文件,更新内容由容器nginx变为httpd</li> 
  </ol> 
  <pre><code class="prism language-powershell">version: <span class="token string">'3'</span>
services:
  web:
    image: library<span class="token operator">/</span>httpd						<span class="token comment">#容器变更</span>
    ports:
      <span class="token operator">-</span> <span class="token string">"80:80"</span>
    volumes:
      <span class="token operator">-</span> web<span class="token operator">-</span><span class="token keyword">data</span>:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>apache2<span class="token operator">/</span>htdocs		<span class="token comment">#挂载地址改变</span>
    networks:
      <span class="token operator">-</span> vm_net
    deploy:
      replicas: 6
      update_config:							<span class="token comment">#升级规则</span>
        parallelism: 2							<span class="token comment">#每次更新2个副本</span>
        delay: 5s								<span class="token comment">#每批次间隔5秒</span>
      restart_policy:							<span class="token comment">#副本重启规则</span>
        condition: on<span class="token operator">-</span>failure
  visualizer:
    image: dockersamples<span class="token operator">/</span>visualizer
    ports:
      <span class="token operator">-</span> <span class="token string">"8080:8080"</span>
    stop_grace_period: 1m30s
    volumes:
      <span class="token operator">-</span> <span class="token string">"/var/run/docker.sock:/var/run/docker.sock"</span>
    deploy:
      placement:
        constraints: <span class="token namespace">[node.role == manager]</span>
volumes:
  web<span class="token operator">-</span><span class="token keyword">data</span>:
networks:
  vm_net:
</code></pre> 
  <ol start="2"> 
   <li>查看变革效果</li> 
  </ol> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker stack deploy -c docker-stack.yml my_cluster</span>
Updating service my_cluster_web <span class="token punctuation">(</span>id: e0eo4mb2xnxagz9tfj323yye1<span class="token punctuation">)</span>
Updating service my_cluster_visualizer <span class="token punctuation">(</span>id: vh66myojbstzpkzqb7w1idoqf<span class="token punctuation">)</span>
<span class="token comment">#stack更新成功</span>
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker service ls</span>
ID                  NAME                    MODE                REPLICAS            IMAGEPORTS
vh66myojbstz        my_cluster_visualizer   replicated          1<span class="token operator">/</span>1                 dockersamples<span class="token operator">/</span>visualizer:latest<span class="token operator">*</span>:8080<span class="token operator">-</span>>8080<span class="token operator">/</span>tcp
e0eo4mb2xnxa        my_cluster_web          replicated          6<span class="token operator">/</span>6                 httpd:latest<span class="token operator">*</span>:80<span class="token operator">-</span>>80<span class="token operator">/</span>tcp
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker service ps my_cluster_web</span>
ID                  NAME                   IMAGE               NODE                DESIRED STATE       CURRENT STATE          ERROR               PORTS
t3kkv9bnatzb        my_cluster_web<span class="token punctuation">.</span>1       httpd:latest        node1               Running             Running 2 minutes ago
uvq3ayobwam1         \_ my_cluster_web<span class="token punctuation">.</span>1   nginx:latest        node1               Shutdown            Shutdown 2 minutes ago
4jipeibbrhvx        my_cluster_web<span class="token punctuation">.</span>2       httpd:latest        node3               Running             Running 2 minutes ago
ar53a9v7o94t         \_ my_cluster_web<span class="token punctuation">.</span>2   nginx:latest        node3               Shutdown            Shutdown 2 minutes ago
i10n4vu3ml6a        my_cluster_web<span class="token punctuation">.</span>3       httpd:latest        node2               Running             Running 2 minutes ago
ulji2jzh25qq         \_ my_cluster_web<span class="token punctuation">.</span>3   nginx:latest        node2               Shutdown            Shutdown 2 minutes ago
zftgr62l49ae        my_cluster_web<span class="token punctuation">.</span>4       httpd:latest        node1               Running             Running 2 minutes ago
w0vgln16y86q         \_ my_cluster_web<span class="token punctuation">.</span>4   nginx:latest        node1               Shutdown            Shutdown 2 minutes ago
bcc84ui7qb7o        my_cluster_web<span class="token punctuation">.</span>5       httpd:latest        node3               Running             Running 2 minutes ago
i8zdnfyamheh         \_ my_cluster_web<span class="token punctuation">.</span>5   nginx:latest        node3               Shutdown            Shutdown 2 minutes ago
9qxvk8z43yg4        my_cluster_web<span class="token punctuation">.</span>6       httpd:latest        node2               Running             Running 2 minutes ago
j5pjbv1yqnso         \_ my_cluster_web<span class="token punctuation">.</span>6   nginx:latest        node2               Shutdown            Shutdown 2 minutes ago
</code></pre> 
  <ol start="3"> 
   <li>查看web页面显示变更成功<br> <a href="http://img.e-com-net.com/image/info8/a42772bd614a4794b39c0b703c3bb856.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a42772bd614a4794b39c0b703c3bb856.jpg" alt="Docker-学习总结(集群管理-Docker Stack+Portainer图形)_第2张图片" width="438" height="459" style="border:1px solid black;"></a></li> 
  </ol> 
  <h2>资源控制</h2> 
  <p><mark>官方文档中:RESOURCES部分</mark></p> 
  <ol> 
   <li>查看没有限制时的状态</li> 
  </ol> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker ps -a</span>
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS
cd8318ca5acc        httpd:latest                      <span class="token string">"httpd-foreground"</span>       10 minutes ago      Up 10 minute
0541ae18272d        httpd:latest                      <span class="token string">"httpd-foreground"</span>       10 minutes ago      Up 10 minute
860e5f8ca1ea        dockersamples<span class="token operator">/</span>visualizer:latest   <span class="token string">"npm start"</span>              26 minutes ago      Up 25 minute
33713d5af03b        dockersamples<span class="token operator">/</span>visualizer:latest   <span class="token string">"npm start"</span>              27 minutes ago      Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 2
f234441e886b        nginx:latest                      <span class="token string">"nginx -g 'daemon of…"</span>   39 minutes ago      Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 1
0db5d8d7ed5c        nginx:latest                      <span class="token string">"nginx -g 'daemon of…"</span>   About an hour ago   Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 1
<span class="token comment">#选择查看容器cd8318ca5acc</span>
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># cd /sys/fs/cgroup/memory/docker/</span>
<span class="token comment">#进入cgroup文件下内存</span>
<span class="token namespace">[root@node1 docker]</span><span class="token comment"># cd cd8318ca5acc823e25d2fe5ddb2b4a01cc0635f0587cd1e6ec324e55718f5679/</span>
<span class="token namespace">[root@node1 cd8318ca5acc823e25d2fe5ddb2b4a01cc0635f0587cd1e6ec324e55718f5679]</span><span class="token comment"># cat memory.limit_in_bytes</span>
9223372036854771712
<span class="token comment">#查看容器上限</span>
</code></pre> 
  <ol start="2"> 
   <li>修改yml文件,添加资源限制,stack重新加载</li> 
  </ol> 
  <pre><code class="prism language-powershell">version: <span class="token string">'3'</span>
services:
  web:
    image: library<span class="token operator">/</span>httpd
    ports:
      <span class="token operator">-</span> <span class="token string">"80:80"</span>
    volumes:
      <span class="token operator">-</span> web<span class="token operator">-</span><span class="token keyword">data</span>:<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>apache2<span class="token operator">/</span>htdocs
    networks:
      <span class="token operator">-</span> vm_net
    deploy:
      replicas: 6
      update_config:
        parallelism: 2
        delay: 5s
      restart_policy:
        condition: on<span class="token operator">-</span>failure
      resources:										<span class="token comment">#资源限制模块</span>
        limits:
          cpus: <span class="token string">'0.50'</span>									<span class="token comment">#cpu使用为50%</span>
          memory: 50M									<span class="token comment">#限制内容为50M</span>
  visualizer:
    image: dockersamples<span class="token operator">/</span>visualizer
    ports:
      <span class="token operator">-</span> <span class="token string">"8080:8080"</span>
    stop_grace_period: 1m30s
    volumes:
      <span class="token operator">-</span> <span class="token string">"/var/run/docker.sock:/var/run/docker.sock"</span>
    deploy:
      placement:
        constraints: <span class="token namespace">[node.role == manager]</span>
volumes:
  web<span class="token operator">-</span><span class="token keyword">data</span>:
networks:
  vm_net:
  
<span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker stack deploy -c docker-stack.yml my_cluster</span>
Updating service my_cluster_web <span class="token punctuation">(</span>id: e0eo4mb2xnxagz9tfj323yye1<span class="token punctuation">)</span>
Updating service my_cluster_visualizer <span class="token punctuation">(</span>id: vh66myojbstzpkzqb7w1idoqf<span class="token punctuation">)</span>
<span class="token comment">#重新加载</span>
</code></pre> 
  <ol start="3"> 
   <li>查看限制后的状态<br> <mark>因为更新了容器,所以查看容器ID也会变</mark></li> 
  </ol> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 stack]</span><span class="token comment"># docker ps -a</span>
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS
8d6002aee00f        httpd:latest                      <span class="token string">"httpd-foreground"</span>       4 minutes ago       Up 4 minutes
b98bf43f34e3        httpd:latest                      <span class="token string">"httpd-foreground"</span>       4 minutes ago       Up 4 minutes
cd8318ca5acc        httpd:latest                      <span class="token string">"httpd-foreground"</span>       17 minutes ago      Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 4
0541ae18272d        httpd:latest                      <span class="token string">"httpd-foreground"</span>       17 minutes ago      Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 4
860e5f8ca1ea        dockersamples<span class="token operator">/</span>visualizer:latest   <span class="token string">"npm start"</span>              33 minutes ago      Up 33 minute
33713d5af03b        dockersamples<span class="token operator">/</span>visualizer:latest   <span class="token string">"npm start"</span>              34 minutes ago      Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 3
f234441e886b        nginx:latest                      <span class="token string">"nginx -g 'daemon of…"</span>   About an hour ago   Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 1
0db5d8d7ed5c        nginx:latest                      <span class="token string">"nginx -g 'daemon of…"</span>   About an hour ago   Exited <span class="token punctuation">(</span>0<span class="token punctuation">)</span> 1
<span class="token comment">#查看新生成的容器是不是都是50M,容器是8d6002aee00f和b98bf43f34e3</span>
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># cd /sys/fs/cgroup/memory/docker/</span>
<span class="token namespace">[root@node1 docker]</span><span class="token comment"># ls</span>
860e5f8ca1ea7a2d5de91bd856340792ad037ce8f7f4faac224024daad11760b  memory<span class="token punctuation">.</span>failcnt                  memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>t
8d6002aee00f5ed539fa022899eb3c0dd14968e277ef569e739473cf7a48ca57  memory<span class="token punctuation">.</span>force_empty              memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>t
b98bf43f34e3e5f5b3d1a6e9246c273991938c500828cd5dd474ec0188087d10  memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>failcnt             memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>t
cgroup<span class="token punctuation">.</span>clone_children                                             memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>limit_in_bytes      memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>t
cgroup<span class="token punctuation">.</span>event_control                                              memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>max_usage_in_bytes  memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>u
cgroup<span class="token punctuation">.</span>procs                                                      memory<span class="token punctuation">.</span>kmem<span class="token punctuation">.</span>slabinfo            memory<span class="token punctuation">.</span>limit_
<span class="token namespace">[root@node1 docker]</span><span class="token comment"># cd 8d6002aee00f5ed539fa022899eb3c0dd14968e277ef569e739473cf7a48ca57/</span>
<span class="token namespace">[root@node1 8d6002aee00f5ed539fa022899eb3c0dd14968e277ef569e739473cf7a48ca57]</span><span class="token comment"># cat memory.limit_in_bytes</span>
52428800
<span class="token namespace">[root@node1 8d6002aee00f5ed539fa022899eb3c0dd14968e277ef569e739473cf7a48ca57]</span><span class="token comment"># cd ..</span>
<span class="token namespace">[root@node1 docker]</span><span class="token comment"># cd b98bf43f34e3e5f5b3d1a6e9246c273991938c500828cd5dd474ec0188087d10/</span>
<span class="token namespace">[root@node1 b98bf43f34e3e5f5b3d1a6e9246c273991938c500828cd5dd474ec0188087d10]</span><span class="token comment"># cat memory.limit_in_bytes</span>
52428800
<span class="token comment">#显示2个容器均改为了50M</span>
</code></pre> 
  <h2>图形界面portainer</h2> 
  <ul> 
   <li>官方网站:https://www.portainer.io/</li> 
  </ul> 
  <h3>安装前准备</h3> 
  <ol> 
   <li>portainer运行文件:https://downloads.portainer.io/portainer-agent-stack.yml</li> 
   <li>portainer软件:portainer/portainer 和portainer/agent,在公有DockerHUB中可以下载,存放在本地harbor仓库中</li> 
  </ol> 
  <h3>安装portainer</h3> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 opt]</span><span class="token comment"># docker stack deploy -c portainer-agent-stack.yml portainer</span>
Creating network portainer_agent_network
Creating service portainer_agent
Creating service portainer_portainer
<span class="token namespace">[root@node1 opt]</span><span class="token comment"># docker service ls</span>
ID                  NAME                  MODE                REPLICAS            IMAGE                        PORTS
87yizm4zhk2k        portainer_agent       global              3<span class="token operator">/</span>3                 portainer<span class="token operator">/</span>agent:latest
g63njdqrld84        portainer_portainer   replicated          1<span class="token operator">/</span>1                 portainer<span class="token operator">/</span>portainer:latest   <span class="token operator">*</span>:8000<span class="token operator">-</span>>8000<span class="token operator">/</span>tcp<span class="token punctuation">,</span> <span class="token operator">*</span>:9000<span class="token operator">-</span>>9000<span class="token operator">/</span>tcp
<span class="token namespace">[root@node1 opt]</span><span class="token comment"># docker service ls</span>
ID                  NAME                  MODE                REPLICAS            IMAGE                        PORTS
87yizm4zhk2k        portainer_agent       global              3<span class="token operator">/</span>3                 portainer<span class="token operator">/</span>agent:latest
g63njdqrld84        portainer_portainer   replicated          1<span class="token operator">/</span>1                 portainer<span class="token operator">/</span>portainer:latest   <span class="token operator">*</span>:8000<span class="token operator">-</span>>8000<span class="token operator">/</span>tcp<span class="token punctuation">,</span> <span class="token operator">*</span>:9000<span class="token operator">-</span>>9000<span class="token operator">/</span>tcp

</code></pre> 
  <ol start="3"> 
   <li>web页面查看IP地址:9000端口<br> <mark>第一次登录,设置8位数密码,没截到图</mark><br> <a href="http://img.e-com-net.com/image/info8/70be715a7f36405593c256f9be4bf4f3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/70be715a7f36405593c256f9be4bf4f3.jpg" alt="Docker-学习总结(集群管理-Docker Stack+Portainer图形)_第3张图片" width="650" height="194" style="border:1px solid black;"></a></li> 
  </ol> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1275113684464582656"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Linux运维-企业实战,Docker)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1892464284550623232.htm"
                           title="如何将Docker容器打包并在其他服务器上运行" target="_blank">如何将Docker容器打包并在其他服务器上运行</a>
                        <span class="text-muted">IT小辉同学</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7%E6%80%A7%E5%B7%A5%E5%85%B7%E6%A0%8F/1.htm">技巧性工具栏</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%91%E9%83%A8%E7%BD%B2/1.htm">分布式云部署</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>如何将Docker容器打包并在其他服务器上运行我会幻想很多次我们的相遇,你穿着合身的T恤,一个素色的外套,搭配一条蓝色的牛仔裤,干净的像那天空中的云朵,而我,还是一个的傻傻的少年,我们相识而笑,默默不语,如此甚好!Docker容器使得应用程序的部署和管理变得更加简单和高效。有时,我们可能需要将一个运行中的Docker容器打包,并在其他服务器上运行。本文将详细介绍如何实现这一过程。1.提交容器为镜像</div>
                    </li>
                    <li><a href="/article/1892456833910632448.htm"
                           title="Docker Compose部署大语言模型LLaMa3+可视化UI界面Open WebUI" target="_blank">Docker Compose部署大语言模型LLaMa3+可视化UI界面Open WebUI</a>
                        <span class="text-muted">m0_74824877</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a>
                        <div>一、介绍Ollama:部署+运行大语言模型的软件LLaMa3:史上最强开源AI大模型—Meta公司新发布的大语言模型OpenWebUI:AI用户界面,可通过浏览器访问二、Docker部署docker-compose.yml文件如下:version:'3'services:ollama:container_name:bruce-ollamaimage:ollama/ollamavolumes:-./</div>
                    </li>
                    <li><a href="/article/1892453053508939776.htm"
                           title="mac+php5.3的docker-compose.yml分享" target="_blank">mac+php5.3的docker-compose.yml分享</a>
                        <span class="text-muted">自娱自乐22</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>version:'3'services:nginx:image:nginx:latestcontainer_name:nginx-composevolumes:-./wwwroot:/usr/share/nginx/html:rw-./nginx/nginx/:/etc/nginx/:rw-./log/nginx:/var/log/nginx:rwrestart:alwayslinks:-phpp</div>
                    </li>
                    <li><a href="/article/1892453052569415680.htm"
                           title="mac下docker搭建nginx+php+mysql,并实现nginx负载均衡" target="_blank">mac下docker搭建nginx+php+mysql,并实现nginx负载均衡</a>
                        <span class="text-muted">自娱自乐22</span>
<a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>一环境系统:macOSSonoma14.3芯片:AppleM3Prodocker版本:25.0.5二软件OrbStack[推荐,一款轻量化的docker管理软件,还是docker的命令]item2三步骤拉取nginx镜像dockerpullnginx新建一个nginx容器dockerrun--namenginx5-d-p80:80nginx确认nginx内部的目录[第一次一定要确认下目录]-配置目</div>
                    </li>
                    <li><a href="/article/1892451035201466368.htm"
                           title="亲测centos7安装docker可用" target="_blank">亲测centos7安装docker可用</a>
                        <span class="text-muted">a4132447</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.配置yum下载源为aliyun源yum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo备份当前的yum源mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup下载新的Ce</div>
                    </li>
                    <li><a href="/article/1892445861879803904.htm"
                           title="使用 Docker 基本命令创建并发布带有新功能的镜像到阿里云" target="_blank">使用 Docker 基本命令创建并发布带有新功能的镜像到阿里云</a>
                        <span class="text-muted">2021级计算机网络技术2班梁嘉敏</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E4%BA%91/1.htm">阿里云</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>1.关于Docker镜像1.基础假定您在开发一个网上商城,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?您要如何确保应用能够在这些环境中运行和</div>
                    </li>
                    <li><a href="/article/1892439165430198272.htm"
                           title="容器docker k8s相关的问题汇总及排错" target="_blank">容器docker k8s相关的问题汇总及排错</a>
                        <span class="text-muted">weixin_43806846</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>1.明确问题2.排查方向2.1、docker方面dockerlogs-f容器IDdocker的网络配置问题。2.2、k8s方面node组件问题pod的问题(方式kubectldescribepopod的名称-n命名空间&&kubectllogs-fpod的名称-n命名空间)调度的问题(污点、节点选择器与标签不匹配、存储卷的问题)service问题(访问不了,ingress的问题、service标签</div>
                    </li>
                    <li><a href="/article/1892436519868755968.htm"
                           title="Maven 与 Docker 集成:构建 Docker 镜像并与容器化应用集成" target="_blank">Maven 与 Docker 集成:构建 Docker 镜像并与容器化应用集成</a>
                        <span class="text-muted">drebander</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>在现代软件开发中,容器化已成为一种流行的部署和运行应用程序的方式。通过将应用程序及其所有依赖打包成Docker镜像,开发者可以确保应用能够在不同的环境中一致地运行。而Maven是广泛使用的构建工具,能够帮助管理项目的构建、依赖和发布。本文将介绍如何使用Maven构建Docker镜像,并将其与容器化应用集成,以便于自动化部署和管理。1.Maven与Docker集成概述Maven可以通过插件来构建Do</div>
                    </li>
                    <li><a href="/article/1892428185526661120.htm"
                           title="pgAdmin4在mac m1上面简单使用(Docker)" target="_blank">pgAdmin4在mac m1上面简单使用(Docker)</a>
                        <span class="text-muted">亚林瓜子</span>
<a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/pg/1.htm">pg</a><a class="tag" taget="_blank" href="/search/pgAdmin4/1.htm">pgAdmin4</a><a class="tag" taget="_blank" href="/search/postgredql/1.htm">postgredql</a><a class="tag" taget="_blank" href="/search/GUI/1.htm">GUI</a>
                        <div>问题想要在本地简单了解一下pgAdmin4一些简单功能。故需要在本机先安装看一看。安装步骤拉取docker镜像dockerpulldpage/pgadmin4直接简单运行pgAdmin4dockerrun--namepgAdmin4-p5050:80\-e"PGADMIN_DEFAULT_EMAIL=user@domain.com"\-e"PGADMIN_DEFAULT_PASSWORD=Supe</div>
                    </li>
                    <li><a href="/article/1892403466270208000.htm"
                           title="docker配置Redis主从复制原理及操作" target="_blank">docker配置Redis主从复制原理及操作</a>
                        <span class="text-muted">纪佰伦</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E4%BB%8E/1.htm">主从</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>一、前言要配置Redis主从复制,我默认是了解过Redis的持久化功能的,也就是RDB和AOF,只需要简单了解过即可。持久化的一个作用就是可以定期将内存中的数据备份到硬盘,在系统发生故障的时候,也可以通过持久化文件回复数据,二、关于主从复制1、什么是主从复制主从复制是一种分布式系统数据同步技术,其中主服务器负责处理所有写操作并将变更同步到一个或多个从服务器。从服务器接收这些变更并复制主服务器的数据</div>
                    </li>
                    <li><a href="/article/1892386579293466624.htm"
                           title="03.Docker 命令帮助" target="_blank">03.Docker 命令帮助</a>
                        <span class="text-muted">转身後 默落</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>Docker命令帮助Docker命令帮助1.docker命令帮助2.docker优化Docker命令帮助docker命令是最常使用的docker客户端命令,其后面可以加不同的参数以实现不同的功能。1.docker命令帮助官方文档:https://docs.docker.com/reference/cli/docker/docker[OPTIONS]COMMANDCOMMAND分为:Manageme</div>
                    </li>
                    <li><a href="/article/1892383549030461440.htm"
                           title="Fastgpt本地或服务器私有化部署常见问题" target="_blank">Fastgpt本地或服务器私有化部署常见问题</a>
                        <span class="text-muted">泰山AI</span>
<a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91/1.htm">AI大模型应用开发</a><a class="tag" taget="_blank" href="/search/fastgpt/1.htm">fastgpt</a><a class="tag" taget="_blank" href="/search/rag/1.htm">rag</a><a class="tag" taget="_blank" href="/search/llm/1.htm">llm</a>
                        <div>一、错误排查方式遇到问题先按下面方式排查。dockerps-a查看所有容器运行状态,检查是否全部running,如有异常,尝试dockerlogs容器名查看对应日志。容器都运行正常的,dockerlogs容器名查看报错日志带有requestId的,都是OneAPI提示错误,大部分都是因为模型接口报错。无法解决时,可以找找Issue,或新提Issue,私有部署错误,务必提供详细的日志,否则很难排查。</div>
                    </li>
                    <li><a href="/article/1892378626226188288.htm"
                           title="FastGPT接入向量模型 M3E 和 重排模型 bge-reranker-large" target="_blank">FastGPT接入向量模型 M3E 和 重排模型 bge-reranker-large</a>
                        <span class="text-muted">福葫芦</span>
<a class="tag" taget="_blank" href="/search/M3E/1.htm">M3E</a><a class="tag" taget="_blank" href="/search/M3E/1.htm">M3E</a><a class="tag" taget="_blank" href="/search/FASTGPT/1.htm">FASTGPT</a>
                        <div>一、FastGPT接入向量模型M3E1.拉取m3e镜像#GPU模式启动,并把m3e加载到fastgpt同一个网络dockerpullregistry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api2.查看镜像dockerimages可以按照有一个名称为registry.cn-hangzhou.aliyuncs.com/fastgpt_do</div>
                    </li>
                    <li><a href="/article/1892322898102775808.htm"
                           title="在Linux上安装和使用Docker" target="_blank">在Linux上安装和使用Docker</a>
                        <span class="text-muted">向着开发进攻</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>在Linux上安装和使用Docker:一步步指南Docker是一种流行的容器化平台,它可以帮助开发者轻松构建、部署和运行应用程序。在本文中,我们将介绍如何在Linux系统上安装Docker,并提供一些常用的Docker命令和使用说明。1.安装DockerUbuntu系统更新包索引并安装必要的软件包以允许apt通过HTTPS使用存储库:sudoaptupdatesudoaptinstallapt-t</div>
                    </li>
                    <li><a href="/article/1892300939293945856.htm"
                           title="使用nginx+rtmp+ffmpeg实现桌面直播" target="_blank">使用nginx+rtmp+ffmpeg实现桌面直播</a>
                        <span class="text-muted">handsomestWei</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/rtmp/1.htm">rtmp</a><a class="tag" taget="_blank" href="/search/live%E7%9B%B4%E6%92%AD/1.htm">live直播</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E6%B5%81/1.htm">推流</a><a class="tag" taget="_blank" href="/search/%E6%8B%89%E6%B5%81/1.htm">拉流</a>
                        <div>使用nginx+rtmp+ffmpeg实现桌面直播流媒体服务器搭建dockerrundocker镜像基于添加了rtmp模块的nginx,和ffmpegdockerpullalfg/nginx-rtmpdockerrun-d-p1935:1935-p8080:80--name=nginx-rtmpalfg/nginx-rtmprtmp模块说明进入容器内部查看dockerps|grepalfg/ngi</div>
                    </li>
                    <li><a href="/article/1892293621466591232.htm"
                           title="Linux运维常见问题排查" target="_blank">Linux运维常见问题排查</a>
                        <span class="text-muted">Hadesls</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/1024%E7%A8%8B%E5%BA%8F%E5%91%98%E8%8A%82/1.htm">1024程序员节</a>
                        <div>1.Linux系统安装初始状态时>找不到硬盘,无法进入下一步安装解决方法:进入BIOS/COMS设置,找到硬盘设置相关选项,并设置为兼容模式。2.Linux系统安装时,在硬盘分区完成后>无法继续安装解决方法:硬盘分区不符合安装要求,可能忘记创建根分区或swap交换分区。这一点与Windows系统安装有区别。3.Linux系统安装时,软件包选择困惑,安装完成后发现有组件未按需求安装;解决方法:对Li</div>
                    </li>
                    <li><a href="/article/1892286181303971840.htm"
                           title="在Linux系统下修改Docker的默认存储路径" target="_blank">在Linux系统下修改Docker的默认存储路径</a>
                        <span class="text-muted">讓丄帝愛伱</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E7%8E%AF%E5%A2%83/1.htm">环境</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>在Linux系统下修改Docker的默认存储路径可以通过多种方法实现,下边是通过修改daemon.json文件方式实现查看当前Docker存储路径使用命令dockerinfo|grep"DockerRootDir"查看当前Docker的存储路径,默认为/var/lib/docker停止Docker服务#停止Docker服务,以确保数据一致性sudosystemctlstopdocker#查看doc</div>
                    </li>
                    <li><a href="/article/1892280763081093120.htm"
                           title="Docker 私有仓库 Harbor 详解" target="_blank">Docker 私有仓库 Harbor 详解</a>
                        <span class="text-muted">drebander</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.什么是Harbor?Harbor是一个开源的Docker镜像仓库管理平台,旨在提供更强大的企业级功能,支持私有Docker镜像仓库的管理。Harbor为Docker提供了集中式的镜像管理服务,支持用户和权限管理、镜像版本控制、安全扫描、LDAP集成等功能,是Docker镜像管理的最佳选择之一,特别适合需要高安全性、可扩展性的生产环境。Harbor的主要特点:企业级安全性:提供镜像扫描、安全策略</div>
                    </li>
                    <li><a href="/article/1892277991585673216.htm"
                           title="k8s篇-应用持久化存储(PV和PVC)" target="_blank">k8s篇-应用持久化存储(PV和PVC)</a>
                        <span class="text-muted">jiam明</span>
<a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>一、Volume一般来说,容器一旦被删除后,容器运行时内部产生的所有文件数据也会被清理掉,因此,Docker提供了Volume这种方式来将数据持久化存储。可以说,Volume是Pod与外部存储设备进行数据传递的通道,也是Pod内部容器间、Pod与Pod间、Pod与外部环境进行数据共享的方式。实际上,这个Volume也只是宿主机上本地磁盘中的一个目录,也就是说,volume方式是将容器里面的数据都保</div>
                    </li>
                    <li><a href="/article/1892276731780329472.htm"
                           title="如何使用 Docker 搭建 FastAPI 环境, 本地仅编辑代码" target="_blank">如何使用 Docker 搭建 FastAPI 环境, 本地仅编辑代码</a>
                        <span class="text-muted">Acaibird.</span>
<a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>在开发FastAPI应用时,我们有时希望将应用容器化,以便于部署和管理,同时避免污染本地的Python环境。使用Docker可以轻松实现这一目标,但如果你想在容器中安装依赖并进行调试,如何在不破坏本地环境的情况下管理依赖呢?本文将介绍如何通过Docker将FastAPI应用容器化,并展示如何进入容器安装依赖。1.项目结构假设你已经有一个简单的FastAPI项目结构,主要包含以下文件:Dockerf</div>
                    </li>
                    <li><a href="/article/1892270051516542976.htm"
                           title="Docker 安全基础:权限、用户、隔离机制" target="_blank">Docker 安全基础:权限、用户、隔离机制</a>
                        <span class="text-muted">drebander</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>Docker是一个强大的容器化平台,广泛用于开发、部署和运行应用。由于Docker提供了强大的隔离性和便捷的容器管理功能,它成为了现代DevOps和微服务架构的重要组成部分。然而,随着Docker在生产环境中的广泛应用,容器的安全性也变得至关重要。在本文中,我们将探讨Docker的权限管理、用户管理以及隔离机制,帮助开发者更好地理解和实施Docker安全最佳实践。1.Docker安全基础概述Doc</div>
                    </li>
                    <li><a href="/article/1892267402666766336.htm"
                           title="ceph nautilus(14.2.22) 通过ansible部署grafana无法启动" target="_blank">ceph nautilus(14.2.22) 通过ansible部署grafana无法启动</a>
                        <span class="text-muted">Ethan@YL</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/ceph/1.htm">ceph</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8/1.htm">分布式存储</a>
                        <div>cephnautilus(14.2.22)通过ansible部署grafana无法启动一、ceph环境ceph版本:nautilus(14.2.22)二、cephansible部署1、在cephansible自动化部署的时候,到最后启动grafanadocker的时候,总是启动不了提示:“Timeoutwhenwaitingforxxx.xxx.xxx.xxx:3000”2、通过查看/var/lo</div>
                    </li>
                    <li><a href="/article/1892195882443534336.htm"
                           title="Scrapy分布式爬虫系统" target="_blank">Scrapy分布式爬虫系统</a>
                        <span class="text-muted">ivwdcwso</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a>
                        <div>一、概述在这篇博文中,我们将介绍如何使用Docker来部署Scrapy分布式爬虫系统,包括Scrapyd、Logparser和Scrapyweb三个核心组件。这种部署方式适用于Scrapy项目和Scrapy-Redis分布式爬虫项目。需要安装的组件:Scrapyd-服务端,用于运行打包后的爬虫代码,所有爬虫机器都需要安装。Logparser-服务端,用于解析爬虫日志,配合Scrapyweb进行实时</div>
                    </li>
                    <li><a href="/article/1892194370057203712.htm"
                           title="使用 Docker 部署 Apache Spark 集群教程" target="_blank">使用 Docker 部署 Apache Spark 集群教程</a>
                        <span class="text-muted">努力的小T</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>简介ApacheSpark是一个强大的统一分析引擎,用于大规模数据处理。本文将详细介绍如何使用Docker和DockerCompose快速部署一个包含一个Master节点和两个Worker节点的Spark集群。这种方法不仅简化了集群的搭建过程,还提供了资源隔离、易于扩展等优势。前置条件在开始之前,请确保你的环境中已经准备好了以下组件:安装并运行DockerEngine。安装DockerCompos</div>
                    </li>
                    <li><a href="/article/1892181127494430720.htm"
                           title="Ubuntu下配置国内Docker镜像站,加速你的镜像拉取" target="_blank">Ubuntu下配置国内Docker镜像站,加速你的镜像拉取</a>
                        <span class="text-muted">Aaron own</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B0%8F%E6%8A%80%E5%B7%A7/1.htm">开发小技巧</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>如果执行dockerpull拉取镜像速度慢,可以配置国内镜像站进行加速查看是否已添加镜像站首先执行dockerinfo查看是否有docker镜像站dockerinfo若没有RegistryMirrors字段则表示没有,可新增配置增加配置文件查看/etc/docker/目录下是否存在daemon.json文件ls/etc/docker/若不存在,则可使用如下命令新增sudonano/etc/dock</div>
                    </li>
                    <li><a href="/article/1892180873734844416.htm"
                           title="ubuntu配置docker镜像加速器" target="_blank">ubuntu配置docker镜像加速器</a>
                        <span class="text-muted">黑色幽默ma</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>安装docker。安装步骤可参考https://blog.csdn.net/weixin_42412462/article/details/109180600注册阿里云账号,到容器镜像服务这一栏目按照操作文档步骤操作。最后,检测是否安装成功sudodockerinfo</div>
                    </li>
                    <li><a href="/article/1892177595663970304.htm"
                           title="Dify实现text2sql工作流[SQL调用篇],并查询Postgres数据库 or Mysql数据库(docker容器)" target="_blank">Dify实现text2sql工作流[SQL调用篇],并查询Postgres数据库 or Mysql数据库(docker容器)</a>
                        <span class="text-muted">汀、人工智能</span>
<a class="tag" taget="_blank" href="/search/LLM%E5%B7%A5%E4%B8%9A%E7%BA%A7%E8%90%BD%E5%9C%B0%E5%AE%9E%E8%B7%B5/1.htm">LLM工业级落地实践</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/NL2SQL/1.htm">NL2SQL</a><a class="tag" taget="_blank" href="/search/text2sql/1.htm">text2sql</a><a class="tag" taget="_blank" href="/search/Dify/1.htm">Dify</a>
                        <div>Dify实现text2sql,查询Postgres数据库1.Postgres数据库设置1.1.docker-compose.yml修改为了让sandbox容器能够与docker-db-1容器互相通信,你需要确保几个条件得到满足:网络配置:确保sandbox和db都位于同一个Docker网络中。如果它们不在同一个网络中,数据包将无法直接在容器间路由。从你提供的配置来看,sandbox已经定义了一个网</div>
                    </li>
                    <li><a href="/article/1892131068920786944.htm"
                           title="kafka消费能力压测:使用官方工具" target="_blank">kafka消费能力压测:使用官方工具</a>
                        <span class="text-muted">ezreal_pan</span>
<a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>背景在之前的业务场景中,我们发现Kafka的实际消费能力远低于预期。尽管我们使用了kafka-go组件并进行了相关测试,测试情况见《kafka-go:性能测试》这篇文章。但并未能准确找出消费能力低下的原因。我们曾怀疑这可能是由我的电脑网络带宽问题或Kafka部署时的某些未知配置所导致。为了进一步确定问题的根源,我们决定对Kafka的消费能力进行压力测试。在这篇《kafka的Docker镜像使用说明</div>
                    </li>
                    <li><a href="/article/1892131069432492032.htm"
                           title="MacOS Docker 安装指南" target="_blank">MacOS Docker 安装指南</a>
                        <span class="text-muted">froginwe11</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>MacOSDocker安装指南引言Docker是一个开源的应用容器引擎,它允许您将应用程序与基础设施分开,以此快速交付软件。Docker的核心思想是将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。本文将为您详细介绍如何在MacOS系统上安装Docker。安装Docker1.系统要求在开始安装Docker之前,请确保您的MacOS系统满足以下要求:</div>
                    </li>
                    <li><a href="/article/1892124764550524928.htm"
                           title="DeepSeek在linux下的安装部署与应用测试" target="_blank">DeepSeek在linux下的安装部署与应用测试</a>
                        <span class="text-muted">一望无际的大草原</span>
<a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2/1.htm">大模型部署</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a>
                        <div>结合上一篇文章,本篇文章主要讲述在Redhatlinux环境下如何部署和使用DeepSeek大模型,主要包括ollama的安装配置、大模型的加载和应用测试。关于OpenWebUI在docker的安装部署,OpenWebUI官网也提供了完整的docker部署说明,大家可参考github,但对于OpenWebUI前后端分离的部署没有详细说明,这需要修改一部分前后端代码,后面会陆续分享给大家。ollam</div>
                    </li>
                                <li><a href="/article/107.htm"
                                       title="web报表工具FineReport常见的数据集报错错误代码和解释" target="_blank">web报表工具FineReport常见的数据集报错错误代码和解释</a>
                                    <span class="text-muted">老A不折腾</span>
<a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a><a class="tag" taget="_blank" href="/search/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7/1.htm">可视化工具</a>
                                    <div>在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释,如果有说的不准确的地方,也请各位小伙伴纠正一下。 
  
NS-war-remote=错误代码\:1117 压缩部署不支持远程设计 
NS_LayerReport_MultiDs=错误代码</div>
                                </li>
                                <li><a href="/article/234.htm"
                                       title="Java的WeakReference与WeakHashMap" target="_blank">Java的WeakReference与WeakHashMap</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%B1%E5%BC%95%E7%94%A8/1.htm">弱引用</a>
                                    <div>首先看看 WeakReference 
 
wiki 上 Weak reference 的一个例子: 
 
 

	public class ReferenceTest {
	public static void main(String[] args) throws InterruptedException {
 
            WeakReference r = new Wea</div>
                                </li>
                                <li><a href="/article/361.htm"
                                       title="Linux——(hostname)主机名与ip的映射" target="_blank">Linux——(hostname)主机名与ip的映射</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/hostname/1.htm">hostname</a>
                                    <div>一、 什么是主机名 
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 linuxsir.org 这样的; 
主机名是用于什么的呢? 
答:在一个局域网中,每台机器都有一个主</div>
                                </li>
                                <li><a href="/article/488.htm"
                                       title="oracle 常用技巧" target="_blank">oracle 常用技巧</a>
                                    <span class="text-muted">18289753290</span>

                                    <div>oracle常用技巧   ①复制表结构和数据     create table  temp_clientloginUser   as     select distinct userid from tbusrtloginlog   ②仅复制数据   如果表结构一样   insert into  mytable  select  * &nb</div>
                                </li>
                                <li><a href="/article/615.htm"
                                       title="使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException" target="_blank">使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException</a>
                                    <span class="text-muted">酷的飞上天空</span>
<a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a>
                                    <div>有一个线上环境使用的是c3p0数据库,为外部提供接口服务。最近访问压力增大后台tomcat的日志里面频繁出现 
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResou</div>
                                </li>
                                <li><a href="/article/742.htm"
                                       title="IT系统分析师如何学习大数据" target="_blank">IT系统分析师如何学习大数据</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                                    <div>我是一名从事大数据项目的IT系统分析师。在深入这个项目前需要了解些什么呢?学习大数据的最佳方法就是先从了解信息系统是如何工作着手,尤其是数据库和基础设施。同样在开始前还需要了解大数据工具,如Cloudera、Hadoop、Spark、Hive、Pig、Flume、Sqoop与Mesos。系 统分析师需要明白如何组织、管理和保护数据。在市面上有几十款数据管理产品可以用于管理数据。你的大数据数据库可能</div>
                                </li>
                                <li><a href="/article/869.htm"
                                       title="spring学习——简介" target="_blank">spring学习——简介</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只能由EJB完成的事情。然而Spring的用途不仅限于服务器端的开发,从简单性,可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。其主要特征是依赖注入、AOP、持久化、事务、SpringMVC以及Acegi Security 
 
为了降低Java开发的复杂性,</div>
                                </li>
                                <li><a href="/article/996.htm"
                                       title="自定义颜色的xml文件" target="_blank">自定义颜色的xml文件</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div><?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#FFFFFF</color> <color name="black">#000000</color> &</div>
                                </li>
                                <li><a href="/article/1123.htm"
                                       title="运营到底是做什么的?" target="_blank">运营到底是做什么的?</a>
                                    <span class="text-muted">aoyouzi</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E8%90%A5%E5%88%B0%E5%BA%95%E6%98%AF%E5%81%9A%E4%BB%80%E4%B9%88%E7%9A%84%EF%BC%9F/1.htm">运营到底是做什么的?</a>
                                    <div>文章来源:夏叔叔(微信号:woshixiashushu),欢迎大家关注!很久没有动笔写点东西,近些日子,由于爱狗团产品上线,不断面试,经常会被问道一个问题。问:爱狗团的运营主要做什么?答:带着用户一起嗨。为什么是带着用户玩起来呢?究竟什么是运营?运营到底是做什么的?那么,我们先来回答一个更简单的问题——互联网公司对运营考核什么?以爱狗团为例,绝大部分的移动互联网公司,对运营部门的考核分为三块——用</div>
                                </li>
                                <li><a href="/article/1250.htm"
                                       title="js面向对象类和对象" target="_blank">js面向对象类和对象</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E7%B1%BB%E5%92%8C%E5%AF%B9%E8%B1%A1/1.htm">函数创建类和对象</a>
                                    <div>接触js已经有几个月了,但是对js的面向对象的一些概念根本就是模糊的,js是一种面向对象的语言 但又不像java一样有class,js不是严格的面向对象语言 ,js在java web开发的地位和java不相上下  ,其中web的数据的反馈现在主流的使用json,json的语法和js的类和属性的创建相似 
  
下面介绍一些js的类和对象的创建的技术 
  
一:类和对</div>
                                </li>
                                <li><a href="/article/1377.htm"
                                       title="web.xml之资源管理对象配置 resource-env-ref" target="_blank">web.xml之资源管理对象配置 resource-env-ref</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
                                    <div>resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联 
<resource-env-ref>
    <resource-env-ref-name>资源名</resource-env-ref-name>
    <resource-env-ref-type>查找资源时返回的资源类</div>
                                </li>
                                <li><a href="/article/1504.htm"
                                       title="Create a composite component with a custom namespace" target="_blank">Create a composite component with a custom namespace</a>
                                    <span class="text-muted">sunjing</span>

                                    <div>https://weblogs.java.net/blog/mriem/archive/2013/11/22/jsf-tip-45-create-composite-component-custom-namespace 
  
When you developed a composite component the namespace you would be seeing would </div>
                                </li>
                                <li><a href="/article/1631.htm"
                                       title="【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter" target="_blank">【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div> 一、复本集为什么要加入Arbiter这个角色   回答这个问题,要从复本集的存活条件和Aribter服务器的特性两方面来说。   什么是Artiber?   An arbiter does 
not have a copy of data set and 
cannot become a primary. Replica sets may have arbiters to add a </div>
                                </li>
                                <li><a href="/article/1758.htm"
                                       title="Javascript开发笔记" target="_blank">Javascript开发笔记</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div> 
 获取iframe内的元素 
 
通常我们使用window.frames["frameId"].document.getElementById("divId").innerHTML这样的形式来获取iframe内的元素,这种写法在IE、safari、chrome下都是通过的,唯独在fireforx下不通过。其实jquery的contents方法提供了对if</div>
                                </li>
                                <li><a href="/article/1885.htm"
                                       title="Web浏览器Chrome打开一段时间后,运行alert无效" target="_blank">Web浏览器Chrome打开一段时间后,运行alert无效</a>
                                    <span class="text-muted">bozch</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/chorme/1.htm">chorme</a><a class="tag" taget="_blank" href="/search/alert/1.htm">alert</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%95%88/1.htm">无效</a>
                                    <div>今天在开发的时候,突然间发现alert在chrome浏览器就没法弹出了,很是怪异。 
试了试其他浏览器,发现都是没有问题的。 
开始想以为是chorme浏览器有啥机制导致的,就开始尝试各种代码让alert出来。尝试结果是仍然没有显示出来。 
这样开发的结果,如果客户在使用的时候没有提示,那会带来致命的体验。哎,没啥办法了 就关闭浏览器重启。 
  
结果就好了,这也太怪异了。难道是cho</div>
                                </li>
                                <li><a href="/article/2012.htm"
                                       title="编程之美-高效地安排会议 图着色问题 贪心算法" target="_blank">编程之美-高效地安排会议 图着色问题 贪心算法</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class GraphColoringProblem {

	/**编程之美 高效地安排会议 图着色问题 贪心算法
	 * 假设要用很多个教室对一组</div>
                                </li>
                                <li><a href="/article/2139.htm"
                                       title="机器学习相关概念和开发工具" target="_blank">机器学习相关概念和开发工具</a>
                                    <span class="text-muted">chenbowen00</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                                    <div>基本概念: 
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。 
 
开发工具 
M</div>
                                </li>
                                <li><a href="/article/2266.htm"
                                       title="[宇宙经济学]关于在太空建立永久定居点的可能性" target="_blank">[宇宙经济学]关于在太空建立永久定居点的可能性</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%BB%8F%E6%B5%8E/1.htm">经济</a>
                                    <div> 
       大家都知道,地球上的房地产都比较昂贵,而且土地证经常会因为新的政府的意志而变幻文本格式........ 
 
       所以,在地球议会尚不具有在太空行使法律和权力的力量之前,我们外太阳系统的友好联盟可以考虑在地月系的某些引力平衡点上面,修建规模较大的定居点</div>
                                </li>
                                <li><a href="/article/2393.htm"
                                       title="oracle 11g database control 证书错误" target="_blank">oracle 11g database control 证书错误</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E8%AF%81%E4%B9%A6%E9%94%99%E8%AF%AF/1.htm">证书错误</a><a class="tag" taget="_blank" href="/search/oracle+11G+%E5%AE%89%E8%A3%85/1.htm">oracle 11G 安装</a>
                                    <div>oracle 11g database control 证书错误  
 
win7 安装完oracle11后打开 Database control 后,会打开em管理页面,提示证书错误,点“继续浏览此网站”,还是会继续停留在证书错误页面 
 
解决办法: 
 
是 KB2661254 这个更新补丁引起的,它限制了 RSA 密钥位长度少于 1024 位的证书的使用。具体可以看微软官方公告:</div>
                                </li>
                                <li><a href="/article/2520.htm"
                                       title="Java I/O之用FilenameFilter实现根据文件扩展名删除文件" target="_blank">Java I/O之用FilenameFilter实现根据文件扩展名删除文件</a>
                                    <span class="text-muted">游其是你</span>
<a class="tag" taget="_blank" href="/search/FilenameFilter/1.htm">FilenameFilter</a>
                                    <div>在Java中,你可以通过实现FilenameFilter类并重写accept(File dir, String name) 方法实现文件过滤功能。 
在这个例子中,我们向你展示在“c:\\folder”路径下列出所有“.txt”格式的文件并删除。        1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16 </div>
                                </li>
                                <li><a href="/article/2647.htm"
                                       title="C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例" target="_blank">C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/array/1.htm">array</a>
                                    <div># include <stdio.h>

int main(void)
{
	
	int a[5] = {1, 2, 3, 4, 5};
		//a 是数组的名字 5是表示数组元素的个数,并且这五个元素分别用a[0], a[1]...a[4]
	
	int i;

	for (i=0; i<5; ++i)
		printf("%d\n",</div>
                                </li>
                                <li><a href="/article/2774.htm"
                                       title="PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引" target="_blank">PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/primary/1.htm">primary</a>
                                    <div>PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表有下列字段:会员编号   INT会员姓名  </div>
                                </li>
                                <li><a href="/article/2901.htm"
                                       title="java集合辅助类 Collections、Arrays" target="_blank">java集合辅助类 Collections、Arrays</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a><a class="tag" taget="_blank" href="/search/Arrays/1.htm">Arrays</a><a class="tag" taget="_blank" href="/search/HashCode/1.htm">HashCode</a>
                                    <div>  
Arrays、Collections 
  
1 )数组集合之间转换 
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    } 
     a)Arrays.asL</div>
                                </li>
                                <li><a href="/article/3028.htm"
                                       title="Spring Security(10)——退出登录logout" target="_blank">Spring Security(10)——退出登录logout</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/logout/1.htm">logout</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95/1.htm">退出登录</a><a class="tag" taget="_blank" href="/search/logout-url/1.htm">logout-url</a><a class="tag" taget="_blank" href="/search/LogoutFilter/1.htm">LogoutFilter</a>
                                    <div>       要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退出登录的URL为“/j_spring_secu</div>
                                </li>
                                <li><a href="/article/3155.htm"
                                       title="透过源码学前端 之 Backbone 三 Model" target="_blank">透过源码学前端 之 Backbone 三 Model</a>
                                    <span class="text-muted">逐行分析JS源代码</span>
<a class="tag" taget="_blank" href="/search/backbone/1.htm">backbone</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/1.htm">源码分析</a><a class="tag" taget="_blank" href="/search/js%E5%AD%A6%E4%B9%A0/1.htm">js学习</a>
                                    <div>Backbone 分析第三部分  Model 
概述: Model 提供了数据存储,将数据以JSON的形式保存在 Model的 attributes里, 
但重点功能在于其提供了一套功能强大,使用简单的存、取、删、改数据方法,并在不同的操作里加了相应的监听事件, 
如每次修改添加里都会触发 change,这在据模型变动来修改视图时很常用,并且与collection建立了关联。 </div>
                                </li>
                                <li><a href="/article/3282.htm"
                                       title="SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter" target="_blank">SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter</a>
                                    <span class="text-muted">乒乓狂魔</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>这一篇文章主要介绍下HttpMessageConverter整个注册过程包含自定义的HttpMessageConverter,然后对一些HttpMessageConverter进行具体介绍。 
 
HttpMessageConverter接口介绍: 
 

public interface HttpMessageConverter<T> {

	/**
	 * Indicate</div>
                                </li>
                                <li><a href="/article/3409.htm"
                                       title="分布式基础知识和算法理论" target="_blank">分布式基础知识和算法理论</a>
                                    <span class="text-muted">bluky999</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%87%B4%E6%80%A7%E5%93%88%E5%B8%8C/1.htm">一致性哈希</a><a class="tag" taget="_blank" href="/search/paxos/1.htm">paxos</a>
                                    <div>   
分布式基础知识和算法理论 
BY NODEXY@2014.8.12 
本文永久链接:http://nodex.iteye.com/blog/2103218 
  
在大数据的背景下,不管是做存储,做搜索,做数据分析,或者做产品或服务本身,面向互联网和移动互联网用户,已经不可避免地要面对分布式环境。笔者在此收录一些分布式相关的基础知识和算法理论介绍,在完善自我知识体系的同</div>
                                </li>
                                <li><a href="/article/3536.htm"
                                       title="Android Studio的.gitignore以及gitignore无效的解决" target="_blank">Android Studio的.gitignore以及gitignore无效的解决</a>
                                    <span class="text-muted">bell0901</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/gitignore/1.htm">gitignore</a>
                                    <div>  github上.gitignore模板合集,里面有各种.gitignore : https://github.com/github/gitignore 
  自己用的Android Studio下项目的.gitignore文件,对github上的android.gitignore添加了 
      # OSX files      //mac os下      .DS_Store </div>
                                </li>
                                <li><a href="/article/3663.htm"
                                       title="成为高级程序员的10个步骤" target="_blank">成为高级程序员的10个步骤</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                                    <div>What 
软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。 
  
Why 
 
  得到更多的报酬!因为你的薪水会随着你水平的提高而增加  
  提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进  
  历经更大的挑战。随着你的成长,各种影响力也会提高。  </div>
                                </li>
                                <li><a href="/article/3790.htm"
                                       title="mongdb在linux下的安装" target="_blank">mongdb在linux下的安装</a>
                                    <span class="text-muted">xtuhcy</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>一、查询linux版本号: 
lsb_release -a  
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noa</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>