Docker入门(二)

6.Dockerfile

Dockerfile指令

FROM

FROM 指定基础镜像。第一种方法使用latest也就是最新版,后两者指定具体版本。只能写一个。

语法:

FROM <image>
FROM <image>:<tag>
FROM <image>:<digest>

例:

FROM openjdk:8

 

MAINTAINER

MAINTAINER 描述镜像的作者,以及联系方式(可选),只能写一个。

MAINTAINER  dreams<xxxxxxxxxx@qq.com>

 

LABEL

LABEL 添加镜像的元数据,为镜像设置标签,使用键值对的形式,可配置多个。(可选)

语法:

LABEL <key>=<value>

如:

LABEL version="1.0"
LABEL description="如果使用多行,使用\
可以拼接多行"

 

RUN

RUN 在构建镜像过程中在镜像中执行命令。可配置多个。

语法:

直接shell脚本

RUN <command>

第一个参数为可执行文件,后面的都是参数

RUN ["可执行文件executable","param1","param2","paramN"]

示例:

RUN mkdir /www/dockertest/test
RUN ["./test.php", "dev", "offline"]

 

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

可简化为以下格式:

FROM centos
RUN yum -y install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

 

CMD

CMD 指定容器创建时的默认命令。(CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。)

注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

语法:注意数组内的参数必须使用双引号。

CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["<param1>","<param2>",...] # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数

示例:

CMD ping 127.0.0.1

CMD ["sh", "-c", "ping 127.0.0.1"]

 

ENTRYPOINT

ENTRYPOINT 设置容器创建时的主要命令。(不可被 docker run 命令行参数中指定要运行的程序覆盖)

注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

语法:

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

示例:

ENTRYPOINT ping 127.0.0.1

ENTRYPOINT ["sh", "-c", "ping 127.0.0.1"]

 

EXPOSE

EXPOSE 声明容器运行时监听的特定网络端口。

运行容器后,需要暴露给外部的端口,但仅仅表示该容器想要暴露某些端口,并不会与主机端口有映射关系,如果想将容器暴露的端口与主机映射则需要使用-p或-P参数来映射,可以暴露多个端口

语法

EXPOSE <端口1> [<端口2>...]

示例:

EXPOSE 8090
EXPOSE 8090/udp

 

ENV

ENV 在容器内部设置环境变量,可配置多个。。

语法:

配置单个

ENV <key><value>

配置多个

ENV <key>=<value> <key>=<value>

如:

ENV JAVA_ENV dev

 

ADD

ADD 将文件、目录或远程URL复制到镜像中。

语法:

把src的文件复制到镜像的 dest 位置

ADD <src> <dest>
ADD ["<src>","<dest>"]

如:

ADD /www/index.html /www/ss/
ADD ["/www/index.html","/www/ss/"]

 

COPY

COPY 将文件或目录复制到镜像中。

 

VOLUME

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。VOLUME 为容器创建挂载点或声明卷。将主机中的指定目录挂载到容器中

语法:

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

示例:

这样主机与容器共享/www/ss/目录

VOLUME ["/www/ss/"]

 

WORKDIR

WORKDIR 设置后续指令的工作目录。设置容器中的工作目录,如果该目录不存在,那么会自己创建,在设置完工作目录后,执行pwd命令,打印的目录就是/app,比如使用RUN pwd

语法:

WORKDIR <工作目录路径>

示例:

WORKDIR /app

 

USER

USER 指定后续指令的用户上下文。

用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。

使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT 都将使用该用户

通过docker run运行容器时,可以通过-u参数来覆盖所指定的用户

USER <用户名>[:<用户组>]

示例:

USER dreams

注意:

一定要先确定容器中有这个用户,并且拥有对应的操作权限。

 

ARG

ARG 定义一个变量。

构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

构建命令 docker build 中可以用 –build-arg <参数名>=<值> 来覆盖。

语法:

ARG <参数名>[=<默认值>]

示例:

ARG jdk=8
FROM openjdk:$jdk

使用build覆盖

docker build -t --build-arg jdk=11

 

ONBUILD

ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器。

用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。

ONBUILD <其它指令>

 

STOPSIGNAL

STOPSIGNAL 设置发送给容器以退出的系统调用信号。

默认的stop-signal是SIGTERM,在docker stop的时候会给容器内PID为1的进程发送这个signal,通过–stop-signal可以设置自己需要的signal,主要的目的是为了让容器内的应用程序在接收到signal之后可以先做一些事情,实现容器的平滑退出,如果不做任何处理,容器将在一段时间之后强制退出,会造成业务的强制中断,这个时间默认是10s。

语法:

STOPSIGNAL <signal>

 

HEALTHCHECK

HEALTHCHECK 定义周期性检查容器健康状态的命令。

容器健康状况检查,可以指定周期检查容器当前的健康状况,该命令只能出现一次,如果有多次则只有最后一次生效。

语法:

在容器内部按照指定周期运行指定命令来检测容器健康状况

HEALTHCHECK [OPTIONS] CMD command

取消在基础镜像OPTIONS 选项:

HEALTHCHECK NONE

OPTIONS选项:

  • –interval=DURATION 两次检查的间隔时间,默认30s
  • –timeout=DURATION 命令执行的超时时间,默认30s
  • –retries=N 当连续失败指定次数,容器会被认定为不健康,默认为3次

返回参数:

  • 0: success ——> 健康状态
  • 1: unhealthy —>不健康状态
  • 2: reserved —-> 保留值

示例:

健康检查,每各10s检查容器是否正常,每次不超过3s,并且如果失败了,最多不能超过5次

HEALTHCHECK --interval=10 --timeout=3 --retries=5 CMD ps -ef | grep java || exit 1

 

SHELL

SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。

SHELL 在Windows下通常会有cmd和powershell两种shell。这时就可以通过SHELL来指定所使用的shell类型。

语法:

SHELL ["executable", "parameters"]

示例:

SHELL ["powershell", "-command"]

 

commit 方法

先运行一个容器:

docker run --rm -d -P --name nginx-test nginx

进入容器修改配置

docker exec -it nginx-test /bin/bash

这里可以修改文件内容。

基于修改过配置的容器创建一个新的镜像

docker commit -a "dreams" -m "this is test" nginx-test mynginx:1.0

查看镜像

 

 

build指令

语法:

docker build [OPTIONS] PATH | URL | -

OPTIONS说明:

  • –build-arg=[] :设置镜像创建时的变量;
  • –cpu-shares :设置 cpu 使用权重;
  • –cpu-period :限制 CPU CFS周期;
  • –cpu-quota :限制 CPU CFS配额;
  • –cpuset-cpus :指定使用的CPU id;
  • –cpuset-mems :指定使用的内存 id;
  • –disable-content-trust :忽略校验,默认开启;
  • -f :指定要使用的Dockerfile路径;
  • –force-rm :设置镜像过程中删除中间容器;
  • –isolation :使用容器隔离技术;
  • –label=[] :设置镜像使用的元数据;
  • -m :设置内存最大值;
  • –memory-swap :设置Swap的最大值为内存+swap,”-1″表示不限swap;
  • –no-cache :创建镜像的过程不使用缓存;
  • –pull :尝试去更新镜像的新版本;
  • –quiet, -q :安静模式,成功后只输出镜像 ID;
  • –rm :设置镜像成功后删除中间容器;
  • –shm-size :设置/dev/shm的大小,默认值是64M;
  • –ulimit :Ulimit配置。
  • –squash :将 Dockerfile 中所有的操作压缩为一层。
  • –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
  • –network: 默认 default。在构建期间设置RUN指令的网络模式

 

springboot项目示例

一个最简单的springboot项目

package com.yutian.springbootdockertest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
* @author PoemsAndDreams
* @date 2023-10-16 20:55
*/
@RestController
@RequestMapping("/test")
public class Hello {

    @GetMapping("/test")
    public String Test(){
        return "Hello Docker";
    }
}

打成jar包,上传到linux

创建目录

cd /opt
mkdir dockerfileTest
cd dockerfileTest/
mkdir springbootDocker
cd springbootDocker/

上传jar包到linux

创建一个文件Dockerfile

然后编辑文件

vim Dockerfile

编辑

# 基础镜像
FROM openjdk:8

# 将项目jar包加入到容器
ADD *.jar /springbootApp.jar

# 配置JVM环境变量
ENV JVM_ENV="-Xms128m -Xmx128m"

# 配置其他环境变量,如端口
ENV APP_ENV=""

# 暴露端口
EXPOSE 8080

# 设置启动时执行命令
ENTRYPOINT ["sh","-c","java $JVM_ENV -jar /springbootApp.jar $APP_ENV"]

最后构建

当前目录可以使用.代替

docker build -t springboot-docker-test:1.0 .

就可以查看镜像

docker images

运行成容器

docker run --rm -d -P springboot-docker-test:1.0

查看容器,端口映射为32768

访问成功:

 

7.仓库Registry

常见的仓库

Docker Hub

hub.docker.com

登录后再推上去即可。

 

Aliyun

进入阿里云官网,

阿里云-计算,为了无法计算的价值 (aliyun.com)

搜索容器镜像服务

创建个人仓库

创建命名空间

创建镜像仓库

最后按阿里云提供的步骤做即可。(过于详细,就不粘贴出来了)

 

nexus仓库

创建目录

mkdir -p /opt/docker/nexus

开放权限(实际建议给特定用户开放权限)

chmod 777 -R /opt/docker

 

启动nexus 容器(第一次启动,要自动下载nexus )

docker run -d --restart=always -p 8868:8081 -p 5000:5000 -p 5001:5001 --name nexus -v /opt/docker/nexus:/nexus-data sonatype/nexus3

 

访问端口登录

账户默认admin

密码到如图路径寻找

查看默认密码

cd /opt/docker/nexus/
cat admin.password

再去登录

点击next

输入新密码

要每次都使用密码登录

最后Finish即可

打开设置。再打开仓库

 

创建一个存储器

 

 

 

创建一个仓库

 

再创建一个代理仓库

只需要更改红框内的内容

找到你自己的

容器镜像服务 (aliyun.com)

 

再创建一个public

 

 

 

配置安全认证(因为,这里使用虚拟机的仓库,没有域名,没有SSL证书,有可以不配)

vim /etc/docker/daemon.json

加入

,
"insecure-registries": ["192.168.188.201:5000","192.168.188.201:5001"]

 

最后重启一下

systemctl daemon-reload
systemctl restart docker

 

登录(注意,我们刚刚配置5000 是推送,5001是拉取)

docker login -u admin 192.168.188.201:5000

 

打一个tag(tag后接一个镜像id号)

docker tag cf977de76132 192.168.188.201:5000/springboot-docker-test

 

推送

docker push 192.168.188.201:5000/springboot-docker-test

 

就可以看到仓库里

 

一般下载在5001,先登录

docker login -u admin 192.168.188.201:5001
docker pull 192.168.188.201:5001/springboot-docker-test

 

 

8.容器编排

容器编排:就是针对容器生命周期的管理,对容器的生命周期进行更快速方便的方式进行管理

为了避免部署多个服务,每个服务单独写Dockerfile然后在构建镜像、构建容器,所有就产生了docker-compose多服务部署的工具。

Compose 安装

安装

sudo curl -L "http://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

赋予可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

创建软链即快捷方式:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

查看是否安装成功:

docker-compose --version

 

Compose使用

文档查看Compose file version 2 reference | Docker Docs

我们看这个指令

docker run -d --restart=always --net test-net -v /www/nginx-html:/usr/share/nginx/html -e APP_ENV=dev nginx

使用Compose的yml文件代替过长的指令

切换到工作目录

cd /opt/docker/
mkdir nginx
cd nginx/

创建Compose的yml文件

touch docker-compose.yml

编辑

vim docker-compose.yml

 

文档查看Compose file version 2 reference | Docker Docs

配置如下:

version: "2.1"
services:
  # 其中一个service配置
  nginx-demo:
    # 指定基础镜像
    image: "nginx"
    # 命名
    container_name: "nginx_compose"
    # 重启策略
    restart: "always"
    # 使用network模块定义的网络
    networks:
      - test-net
    # 使用volumes模块定义的路径
    volumes:
      - /www/nginx-html:/usr/share/nginx/html
    # 环境
    environment:
      APP_ENV: dev
    # 暴露端口
    ports:
      - 80:80

networks:
  test-net:
    driver: bridge
    ipam:
      driver: default
      config:
          #子网
        - subnet: 188.18.0.0/16
          #网关
          gateway: 188.18.0.1

就可以代替上面那个docker run

 

常用指令

查看compose所有指令

docker-compose --help

 

各参数用法如下:

build 构建或重建服务
bundle 从compose配置文件中产生一个docker绑定
config 验证并查看compose配置文件
create 创建服务
down 停止并移除容器、网络、镜像和数据卷
events 从容器中接收实时的事件
exec 在一个运行中的容器上执行一个命令
help 获取命令的帮助信息
images 列出所有镜像
kill 通过发送SIGKILL信号来停止指定服务的容器
logs 从容器中查看服务日志输出
pause 暂停服务
port 打印绑定的公共端口
ps 列出所有运行中的容器
pull 拉取并下载指定服务镜像
push Push service images
restart 重启YAML文件中定义的服务
rm 删除指定已经停止服务的容器
run 在一个服务上执行一条命令
scale 设置指定服务运行容器的个数
start 在容器中启动指定服务
stop 停止已运行的服务
top 显示各个服务容器内运行的进程
unpause 恢复容器服务
up 创建并启动容器
version 显示Docker-Compose版本信息

 

注意:docker-compose 命令默认使用的配置文件是当前目录中的 docker-compose.yml 文件

 

1.config

config参数验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。

用法

docker-compose config [options]

选项参数[options]

  • –resolve-image-digests 将镜像标签标记为摘要
  • -q, –quiet 只验证配置不输出,当配置正确时不输出任何容器,当配置错误时输出错误信息。
  • –services 打印服务名称,一行显示一个。
  • –volumes 打印数据卷名称,一行显示一个。
docker-compose config

最后添加的rw,代表可读可写

 

2.ps

ps 列出所有运行中的容器

docker-compose ps [options] [SERVICE...]

用法

示例

目前还没有运行中的容器,往下看

 

3.create

创建服务

docker-compose create [options] [SERVICE...]

选项说明[options]

  • –force-recreate 重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数。
  • –no-recreate 如果容器已经存在则无需重新创建,不兼容–force-recreate参数。
  • –no-build 不创建镜像即使缺失
  • –build 创建容器前生成镜像

将前面我们配的文件里的services里的服务,如下图为一个服务,当然,为了方便,我们就配了一个。

将services里配的所有服务都创建

docker-compose create

将指定名字的服务创建,nginx-demo就是我们配置的名字

docker-compose create nginx-demo

这时还是exit状态,要用up启动

 

4.up

创建并启动容器,(重启也使用这个)

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

命令选项[options]

  • -d 指定在后台以守护进程方式运行服务容器
  • -no-color 设置不使用颜色来区分不同的服务器的控制输出
  • -no-deps 设置不启动服务所链接的容器
  • -force-recreate 设置强制重新创建容器,不能与–no-recreate选项同时使用。
  • –no-create 若容器已经存在则不再重新创建,不能与–force-recreate选项同时使用。
  • –no-build 设置不自动构建缺失的服务镜像
  • –build 设置在启动容器前构建服务镜像
  • –abort-on-container-exit 若任何一个容器被停止则停止所有容器,不能与选项-d同时使用。
  • -t, –timeout TIMEOUT 设置停止容器时的超时秒数,默认为10秒。
  • –remove-orphans 设置删除服务中没有在compose文件中定义的容器
  • –scale SERVICE=NUM 设置服务运行容器的个数,此选项将会负载在compose中通过scale指定的参数。

示例:

将services里配的所有服务都启动起来

docker-compose up -d

将指定名字的服务启动,nginx-demo就是我们配置的名字

docker-compose up -d nginx-demo

 

5.down

停止并移除容器、网络、镜像和数据卷

docker-compose down [options]

命令选项 [options]

  • –rmi type 删除镜像类型,类型可选:
    –rmi all 删除compose文件中定义的所有镜像,
    –rmi local 删除镜像名为空的镜像
  • -v, –volumes 删除已经在compose文件中定义的和匿名的附在容器上的数据卷
  • –remove-orphans 删除服务中没有在compose文件中定义的容器

 

6.stop

stop 停止已运行的服务

docker-compose stop [options] [SERVICE...]

命令选项 [options]

  • -t,–timeout timeout 指定以秒为单位的关机超时时间。(默认值:10)

 

7.scale

设置指定服务运行容器的个数

docker-compose scale [options] [SERVICE=NUM...]

注意:设置指定服务运行容器的个数,理所当然compose文件里不能指定死名字和映射端口号

 

修改一下如图

示例:

docker-compose scale nginx-demo=3

如图:

 

 

8.logs

从容器中查看服务日志输出

docker-compose logs [options] [SERVICE...]

示例

docker-compose logs

还有很多就不再一一赘述了

 

 

9.swarm

1.概念

1.基本概念

Docker Swarm 是 Docker 的集群管理工具

网上找的图

swarm集群节点的管理命令:

  • 初始化集群节点
  • 加入节点
  • 退出节点

用法:

docker swarm COMMAND

Commands:

  • init  初始化swarm
  • join 作为节点和/或方式加入集群

运行Docker 的主机可以主动初始化一个Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点(node)。

节点分为管理(manager)节点和工作(worker)节点.

官网的图

  • swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

 

管理节点用于Swarm集群的管理, docker swarm命令基本只能在管理节点执行(节点退出集群命令docker swarm leave可以在工作节点执行) 。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader, leader通过raft协议实现。通常,第一个启用docker swarm的节点将成为leader,后来加入的都是follower。当前的leader如果挂掉,剩余的节点将重新选举出一个新的leader。每一个manager都有一个完整的当前集群状态的副本,可以保证manager的高可用。

工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点worker节点之间,通过control plane进行通信,这种通信使用gossip协议,并且是异步的。

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。

服务有两种模式:

  • replicated services 按照一定规则在各个工作节点上运行指定个数的任务。
  • global services 每个工作节点上运行一个任务

两种模式通过 docker service create 的–mode 参数指定。

 

大致的工作流程:

 

Swarm集群要求最小3台

其中master是管理节点。node1和node2是任务节点

 

2.创建Swarm集群

登录管理节点,并执行如下命令,192.168.188.202是master节点的ip地址

在master主机执行

docker swarm init--advertise-addr 192.168.188.202

注意看,这里就是作为了一个manager节点

 

3.添加Swarm集群

复制这条指令到工作节点里执行

docker swarm join --token SWMTKN-1-5shw1gmf84btejbvx21s5f8kkhzcucv2rlvc4vdkz0ynoi9sf3-4g4pzxi7i5bnj4z1bhtksobkv 192.168.188.202:2377

 

在node1执行

docker swarm join --token SWMTKN-1-5shw1gmf84btejbvx21s5f8kkhzcucv2rlvc4vdkz0ynoi9sf3-4g4pzxi7i5bnj4z1bhtksobkv 192.168.188.202:2377

 

在node2执行

docker swarm join --token SWMTKN-1-5shw1gmf84btejbvx21s5f8kkhzcucv2rlvc4vdkz0ynoi9sf3-4g4pzxi7i5bnj4z1bhtksobkv 192.168.188.202:2377

 

可以查看集群节点信息,注意这条指令只能在manager节点执行

docker node ls

 

4.退出Swarm集群

退出集群,注意只能在工作节点

docker swarm leave

 

2.service指令

接着就是创建服务

Commands:

  • create 创建一个新服务
  • inspect 显示一个或多个服务的详细信息
  • logs 获取服务或任务的日志服务列表
  • ls 列出服务列表
  • ps 列出一个或多个服务的任务
  • rm 删除一个或多个服务
  • rollback 恢复服务配置
  • scale扩展一个或多个复制服务
  • update更新服务

 

1.create

create 创建一个新服务,也只能在manager节点上

–replicas 表示要创建的副本数,后接指定的数目

docker service create --replicas 2 -p 80:80 --name nginx_swarm nginx

 

2.ls

ls 列出服务列表,在manager上执行

docker service ls

可以看到创建了两个副本数

 

在manager上执行看看运行的容器,发现在manager上运行了一个副本,也就是他即是一个manager节点,也作为一个node节点

docker ps

 

另一个在node1

docker ps

 

3.inspect

inspect 显示一个或多个服务的详细信息

查看服务信息

–pretty 参数简化输出内容

docker service inspect --pretty <service id  / service name>

如:

docker service inspect --pretty nginx_swarm

可以看到副本数是2个

 

4.update

update更新服务

更新服务的实例个数,在manager节点上执行

docker service update --replicas <num> <service id/name>

如:

docker service update --replicas 3 nginx_swarm

 

退出集群,注意只能在工作节点

docker swarm leave

在master查看

docker node ls

确实已经挂掉了

 

不过因为我们设置了副本数为3,所有其他节点自动多运行一个

 

5.ps

可以查看运行中的服务信息,后接节点服务id

docker service ps <service id / service name>

 

3.Node命令

Commands:

  • demote 从集群中的管理器中降级一个或多个节点
  • inspect 显示一个或多个节点的详细信息
  • ls 列出集群中的节点
  • promote 将集群中的一个或多个节点提升为管理节点
  • ps 列出在一个或多个节点上运行的任务,默认为当前节点。
  • rm 从集群中删除一个或多个节点
  • update 更新节点

 

rm 删除一个或多个服务

上面我们停了一个服务

这里我们把它删掉

用法:

docker node rm [OPTIONS] NODE [NODE...]

-f参数表示强制删除

rm 后接nodeid

docker node rm xacfzj4ixrkpm6s8u3wzxufik

 

 

参考资料:

docker-compose命令 – 简书 (jianshu.com)

Docker 网络模式详解及容器间网络通信 – 知乎 (zhihu.com)

【docker】Docker容器的重启策略_docker unless-stopped-CSDN博客

容器镜像服务 (aliyun.com)

尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili

动力节点Docker入门到进阶教程,docker全家桶实战攻略_哔哩哔哩_bilibili

2023最新Docker实战+微服务打包Docker容器,已完结!!_哔哩哔哩_bilibili

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇