序列晋升2:CMD指令大全不止于linux

导航

楔子:
不止于linux指令,本文涵盖Idea、git、docker等常用指令,适合收藏,仅当做工具即可,需要时翻出来检索后直接使用。

工具是‌人类为实现目标所运用的物质或抽象载体‌。

IDEA 快捷

快捷键说明
Ctrl + O重写
Ctrl + I实现
Ctrl + H查看类关系
Ctrl + ALT + H查看方法调用
Alt + F7查看项目中被调用
Ctrl + F当前页面查找
Ctrl + R当前页面替换
Ctrl + Shift + F自定义范围查找
Ctrl + ALT + Ttry…catch for if等
Alt + Insert构造函数,set get等
Ctrl + Y删除
Ctrl + D复制
Ctrl+ ALT + L格式化
F7debug 进入代码
F8debug 下一步
F9debug 恢复程序
Alt + Shift + F7debug 强制进入代码
Shift + F8debug 下一个断点
Alt + F9debug 到光标处

Git命令

Git常用

命令说明
git init [file name]指定目录,新建代码仓库;不指定目录默认当前目录
git clone [url]下载远程仓库和所有历史
git remote rename [remote-name] [newName]修改远程仓库名称,默认origin
git remote add [shortname] [url]增加一个新的远程仓库,并指定名称
git config user.name/email查看全局名/邮件
git config --global user.name/email “newInfo…”设置新的名或邮件
git add [file1] [file2]将几个指定文件放到暂存区
git add [dir]指定目录放到暂存区
git add .当前工作区全部放到暂存区
git reset head [filename]add反操作,撤销暂存区的某个文件add操作
git reset headadd反操作,撤销暂存区的所有add操作
git rm [file1] [file2]删除文件,并同步暂存区
git rm --cached [file]指定文件,删除暂存区,保留工作区
git commit -m [msg]提交当前暂存区到本地仓库
git commit [file1] [file2] … -m [msg]指定暂存区的文件,提交到本地仓库
git commit -a工作区直接提交到本地仓库
git branch查询所有分支,-r 查远程分支, -a 查询本地+远程
git branch [branch-name]新建分支,但停留在当前分支,-b 代表切换到新分支
git checkout [branch-name]切换到指定分支
git branch -d [branch-name]删除本地分支
git branch -dr [remote-name]/[branch-name]删除远程仓库的分支
git merge [branch-name]将指定分支合并到当前分支
git cherry-pick [commitId]将指定的一次提交,合并到当前分支
git tag [tagName]以当前分支为准,创建本地tag
增加[commitId]可以根据指定提交创建tag
git checkout [tagName]切换到指定tag
git push [remote-name] [tagName]指定本地tag推送到远程仓库
git push [remote-name] --tags本地所有tag推送到远程仓库
git pull默认下载远程仓库关联的分支到当前分支,直接合并
git pull [remote-name] [branch-name]下载指定的远程仓库和分支,与当前本地分支合并
git push推送本地仓库的当前分支,到远程关联的仓库分支
git push [remote-name] [branch-name]推送本地仓库分支到指定的远程仓库分支

工作区/暂存区操作

命令说明
git add .工作区所有修改添加到暂存区
git add [file1] [file2]指定工作区的文件添加到暂存区
git rm [file1] [file2]删除工作区文件,并将删除记录添加到暂存区,彻底删除
git rm --cached [file]工作区保留,但删除记录添加到暂存区,不再受版本控制
git mv oldName newName更改文件名,并添加到暂存区

提交本地仓库

命令操作
git commit -m [message]暂存区提交到本地仓库
git commit [file]1 [file2] -m [msg]指定暂存区的文件,提交到本地仓库
git commit -v提交时展示所有对比信息
git commit --amend -m [msg]替代上一次提交
git commint --amend [file1] [file2] -m [msg]替代上一次提交,并指定文件的变化

分支操作

命令说明
git branch展示本地所有分支
git branch -r展示所有远程分支
git branch -a展示本地+远程所有分支
git branch [branch-name]新建一个分支,但停留在当前分支
git checkout -b [branch-name]新建一个分支,并切换到该分支
git branch --track [branch-name]
[remoteName]/[branch-name]
新建一个分支,并建立远程分支关联关系
git branch --set-upstream-to [remote]/[branch]指定当前分支与远程分支的关联关系
git checkout [branch-name]切换到指定分支
git checkout -切换到上一个分支
git merge [branch-name]把[branch-name]分支合并到当前分支
git cherry-pick [commitId]把指定的commit合并进当前分支
git branch -d [branch-name]删除本地分支
git push origin --delete [branch-name]删除远程分支
git branch -dr [branch-name]删除远程分支

标签操作

命令说明
git tag [tagName]以当前分支为准,创建本地tag
git tag [tagName] [commitId]根据指定的提交ID,创建tag
git push [remote-name] [tagName]指定本地tag推送到远程仓库
git push [remote-name] --tags本地所有tag推送到远程仓库
git checkout -b [branch-name] [tagName]新建一个分支并创建tag
git checkout [tagName]切换到指定tag
git tag --list查看所有tag
git tag -d [tagName]删除tag
git push origin :refs/tags/[tagName]删除远程tag

远程仓库与同步

命令说明
git fetch [remote-name]下载远程仓库的所有变动记录到本地仓库,需手动合并
git fetch [remote-name] [branch-name]下载指定分支的更新记录到本地仓库,需手动合并
git merge [remote-name]/[branch-name]fetch后,当前分支合并远程分支
git fetch [remote-name] [branch-name]:tmp从远程仓库下载指定分支,并建立tmp新分支
git merge tmp当前本地分支,合并tmp分支
git remote show [remote-name]展示远程仓库的信息
git remote add [shortname] [url]增加一个新的远程仓库,并指定名称
git pull [remote-name] [branch-name]下载指定分支的更新记录,并与本地仓库合并
git push [remote-name] [branch-name]上传本地分支到远程仓库
git push [remote-name]上传当前分支到远程仓库
git push [remote-name] --force强制上传当前分支到远程仓库,忽略冲突
git push [remote-name] all推送所有本地分支到远程仓库

撤销操作

命令说明
git checkout [filename]暂存区的文件,恢复到工作区
git checkout [commitId] [filename]将某次commit指定的文件,恢复到工作区和暂存区
git checkout .暂存区所有文件,恢复到工作区
git reset [file name]将暂存区的指定文件,恢复到上次commit,工作区不变
git reset --hard工作区和暂存区,全部恢复到上次commit
git reset [commitId]暂存区恢复指定commit,工作区不变
git reset --hard [commitId]工作区和暂存区,全部恢复到指定commit
git reset --keep [commitId]工作区和暂存区不变,但是提交跟踪,恢复到指定的commit
git reset head [filename]add反操作,撤销暂存区某个文件的add操作
git reset headadd反操作,撤销暂存区的所有add操作
git revert [commitId]取消指定的commit
git stash保存当前工作区和暂存区的状态
git stash pop恢复上次工作区和暂存区的状态

查看信息

命令说明
git log查询当前分支的历史版本
git status查询所有变更文件
git log --stat查询每次commit发生变更的文件
git log -S [keyword]关键字搜索commit -m信息
git log -p [file name]查询指定文件相关的diff
git shortlog -sn查询提交过的用户,按提交次数排序
git blame [file name]查询文件被改修的时间、用户
git diff暂存区和工作区的差异
git diff --cached [file name]暂存区的文件与上一个commit的差异
git diff HEAD工作区与上次commit的差异
git show --name-only [commitId]查询指定commit的文件变化

Linux

Linux基本

cd 路径 改变当前路径

ls 查看当前路径下的文件

  • -a 显示所有文件及目录
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -R 若目录下有文件,则以下之文件亦皆依序列出

查看日志

cat /日志路径

tail -f /日志路径

日 志 文 件 说 明:

/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure 与安全相关的日志信息

/var/log/maillog 与邮件相关的日志信息

/var/log/cron 与定时任务相关的日志信息

/var/log/spooler 与UUCP和news设备相关的日志信息

/var/log/boot.log 守护进程启动和停止相关的日志消息

系统

uname -a 查看内核/操作系统/CPU信息

cat /etc/issue

cat /etc/redhat-release 查看操作系统版本

cat /proc/cpuinfo 查看CPU信息

hostname 查看计算机名

lspci -tv 列出所有PCI设备

lsusb -tv 列出所有USB设备

lsmod 列出加载的内核模块

env 查看环境变量

资源

free -m 查看内存使用量和交换区使用量

df -h 查看各分区使用情况

du -sh <目录名> 查看指定目录的大小

grep MemTotal /proc/meminfo 查看内存总量

grep MemFree /proc/meminfo 查看空闲内存量

uptime 查看系统运行时间、用户数、负载

cat /proc/loadavg 查看系统负载

rm -rf 目录名 删除文件

chown username /abc -R 将目录/abc所有者设置为username

磁盘和分区

mount | column -t 查看挂接的分区状态

mount /dev1 /mnt 将/dev1挂载到/mnt下

fdisk -l 查看所有分区

swapon -s 查看所有交换分区

hdparm -i /dev/hda 查看磁盘参数(仅适用于IDE设备)

dmesg | grep IDE 查看启动时IDE设备检测状况

df -h 查看分区使用情况

文件

mkdir /xx/xx 创建文件夹

touch x.md 创建文件实例

rm -rf 目录名 删除文件夹和实例

rm -f /xx/a.log 删除文件实例

cp 源文件(/a/x.txt) 目标文件(/b/x.txt) 复制,如果复制整个目录需要参数 -R

mv 源文件 目标文件 移动,-b当文件存在时创建备份, -f直接覆盖

tar -zxvf 文件名.tar.gz/xz/bzip2 目标目录 解压缩tar

网络

ifconfig 查看所有网络接口的属性

iptables -L 查看防火墙设置

route -n 查看路由表

netstat -lntp 查看所有监听端口

netstat -antp 查看所有已经建立的连接

netstat -s 查看网络统计信息

lsof -i:8081 查看指定端口情况信息

进程

ps -ef|grep <启动命令相关关键字> 查看所有进程,概要信息

top 实时显示进程状态

ps -aux|grep <启动命令相关关键字> 查看所有进程,详细信息

用户

w <用户名>,查看活动用户

id <用户名>,查看指定用户信息

last <用户名>, 查看用户登录日志

cut -d: -f1 /etc/passwd,查看系统所有用户

cut -d: -f1 /etc/group 查看系统所有组

crontab -l 查看当前用户的计划任务

groupadd <用户组>,添加用户组

useradd <用户名> -g<用户组> -p<密码>,添加用户

userdel -r <用户名>, 彻底删除用户

服务

chkconfig --list ,列出所有系统服务

chkconfig --list | grep on ,列出所有启动的系统服务

chkconfig --add <服务名>,添加/etc/init.d/服务名

chconfig 服务名 on,设置服务开机启动

service sshd,查看SSH服务

service NetworkManager stop,停止网络模块

chkconfig NetworkManager off,停止网络模块

chkconfig --list sshd 查看系统服务名称类似sshd的服务

systemctl start/stop/restart <服务名>,服务启停

systemctl status <服务名> ,查看服务信息

systemctl enable <服务名> ,设置服务开机启动

systemctl disable <服务名 >,取消服务开机启动

Docker

docker基础命令

设置docker hub镜像地址和docker存储地址

编辑daemon.json

{
  "registry-mirrors": [
    "https://8d489jr8.mirror.aliyuncs.com"
  ],//dockerhub 镜像地址
  "insecure-registries": [],//设置私有仓库
  "debug": true,
  "experimental": true,
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "5"
   },
   "graph":"/var/lib/docker" //docker本地存储数据的地址,镜像、数据卷、容器等
}

清理空间(pull挂起的、无tag的镜像,未启动的容器,无用的网络等)

docker system prune

容器内访问宿主机地址 host.docker.internal

查看容器日志

docker logs -f -t --tail 100 容器ID

登录镜像仓库

docker login --username=账号 仓库地址(默认DockerHub)

镜像

搜索镜像

docker search xxx

查看本地镜像

docker images

删除镜像

docker rmi 镜像id 或 镜像名:tag

根据现有容器创建镜像

docker commit -a “作者” -m “说明” -p 容器ID 镜像名:tag

打标签,一般用于私有库上传
docker tag 源镜像ID 仓库地址/新镜像名:版本

拉取镜像,不指定tag则最新,指定仓库地址在xxx:tag前仓库地址

docker pull xxx:tag

上传镜像,指定仓库在xxx:tag前加仓库地址

docker push xxx:tag

导出镜像

docker save 镜像名 > /xxx.tar

导入镜像

docker load --input /xxx.tar

容器

查看本地容器

docker ps -a

启停容器

docker start/stop 容器id 或 name

重启容器

docker restart 容器id 或name

删除容器,参数-v 代表同时删除数据卷,如果有其它容器在使用,则不会删除

docker rm 容器id 或 name

根据镜像生成容器

docker run 参数… 镜像id 或者 镜像名:tag 指令[可选,会覆盖Dockerfile的CMD]

  • -d 后台运行容器,并返回容器ID
  • –restart = 重启策略
    • 默认no,退出时不启动
    • always退出容器时,总是启动
    • unless-stopped,退出时保持启动,忽略docker停止容器指令
    • on-failure,故障退出时启动
    • on-failure:3,故障退出时启动,最多尝试3次
  • –name 容器名
  • –hostname 主机名
  • -p 暴露端口,对外暴露端口:容器内部服务端口
  • –net 指定容器使用的网络
  • -e 设置环境变量,格式 -e “key=val”
  • –env 设置环境变量,格式 --env key1=“val1” key2=“val2”
  • –ip 分配docker网络里的固定ip给容器
  • –dns 指定dns服务器地址
  • -m或–memory 容器内存上限,单位B、K、M、G
  • –cpus 容器cpu上限,核心数
  • –it 生成容器并进入
  • –link 源容器:目标容器,单向打通网络
  • 挂载数据卷

在指定的容器上执行指令, -user root代表强制root身份,例如模拟一个终端:

docker -exec -it 容器id /bin/bash

容器修改后做新镜1像

docker commit -a “sine” -m “说明描述” -p 容器ID 新镜像名:tag

复制宿主机文件到容器

docker cp 文件完整路径 容器ID或name:目标路径

复制容器文件到宿主机

docker cp 容器ID或name:容器内文件完整路径 宿主机路径

修改容器启动参数

docker container update 参数… 容器id或name

查看容器网络所有信息,包括LABEL、网络等

docker inspect 容器ID

docker网络

查看所有网络

docker network ls

创建自定义网络

docker network create 网络名

  • –driver,网络类型,默认bridge

    • none,容器不做任何配置,只有一个127本地回环IP
    • bridge,docker节点内子网,按网段分配容器IP,容器未指定 IP则自动分配子网IP
    • host,容器共享宿主机IP,端口不可冲突
    • overlay,docker集群子网
  • –subnet,子网段,如10.100.0.0/16代表10.100.0.1到10.100.255.255

    ​ 10.0.0.0/8代表10.0.0.1至10.255.255.255

  • –gateway,网关,如10.100.0.1

创建自定义子网

docker network create --driver bridge --subnet 10.100.0.0/16 网络名

删除网络

docker network rm 网络名

删除所有未使用的网络

docker network prune

查看网络明细

docker network inspect 网络名

容器加入指定网络(可加入多个网络,便于打通不同网段)

docker network connect 网络名 容器ID

断开容器与指定的网络

docker network disconnect 网络名 容器ID

数据卷

修改数据卷路径,在默认路径/var/lib/docker,编辑daemon.json

{
  "log-level": "warn",
  "log-driver": "json-file",
  "log-opts": {
     "max-size": "10m",
     "max-file": "5"
   },
   "graph":"/var/lib/docker"
}

查看所有数据卷

docker volume ls

创建一个自定义容器卷

docker volume create volumeName

查看指定容器卷详情信息

docker volume inspect volumeName

删除数据卷

docker volume rm volumeName

匿名挂载,不显示指定数据卷名

docker run … -v /容器路径

具名挂载

docker run … -v 数据卷名:/容器路径

指定宿主机路径挂载

docker run … -v /宿主机路径:/容器路径

共享指定容器的挂载

docker run … --volumes-from 容器名/ID

Dockerfile

指定dockerfile文件制作镜像

docker build -f dockerfile路径 -t 镜像名:tag .

Dockerfile指令

指令示例说明
FROMFROM java:8当前制作镜像的基础镜像
MAINTAINERMAINTAINER sine666@live.com镜像作者
LABELLABEL key1=“val1” key2=“val2”容器的元数据信息
docker inspect 容器ID可查询
COPYCOPY lib/jar/ /usr/local/app/jar/把当前上下文目录的源文件,
复制到容器的指定路径
容器路径不存在则自动创建
ADD与COPY用法一致
复制gzip、xz、bzip2这些tar时
会自动解压
WORKDIRWORKDIR /usr/local/myapp指定工作目录
也就是RUN执行命令时的当前目录
ENVENV JAVA_HOME=“…”设置环境变量
EXPOSEEXPOSE 8000镜像暴露的端口
VOLUMEVOLUME “容器路径”设置匿名卷挂载
RUNRUN echo “run info”制作镜像过程中执行的命令
可以多个RUN
build过程中,每个RUN都是新建的一层
CMDCMD echo “single info…”启动容器时执行的命令
会被docker run参数覆盖
ENTRYPOINTENTRYPOINT echo “entrypoint…”启动容器时一定会被执行的命令
不会被docker run参数覆盖
ONBUILDONBUILD echo “heihei…”本镜像不会执行的命令
FROM这个镜像时,会执行

shell和exec

RUN、CMD、ENTRYPOINT都支持shell格式和exec格式的命令行

# shell
RUN yum -y install vim
CMD yum -y install vim
ENTRYPOINT yum -y install vim

# exec
RUN ["yum", "-y", "install", "vim"]
CMD ["yum", "-y", "install", "vim"]
ENTRYPOINT ["yum", "-y", "install", "vim"]

执行多条指令,使用&&拼接

RUN yum install -y vim && echo "ok..."

CMD yum -y install vim \
&& echo "ok..."

ENTRYPOINT yum -y install vim \
&& echo "ok..."

Dockerfile模板

#基础父镜像
FROM chinasine/centos:7
#当前镜像作者
MAINTAINER 张三<666@163.com>

#复制应用文件
COPY /app/xx.jar /usr/local/app/xx.jar

#复制ENTRYPPOINT执行的shell文件,比如指定DNS
#entrypoint.sh 内容假设为 echo nameserver  219.141.140.10  >> /etc/resolv.conf
COPY entrypoint.sh /usr/local/entrypoint.sh

#指定工作目录
WORKDIR /usr/local/app

#设置环境变量
ENV MYSQL_USER_NAME=root \
MYSQL_PASSWORD=root
#制作镜像时执行的shell
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN yum -y install vim

#启动容器时的指令
CMD ["java", "-jar", "-server", "-Xms2048M", "-Xmx4096M", "-Xmn1536", "-XX:MaxTenuringThreshold=20", "xx.jar"]

#启动容器时,一定会执行的指令
ENTRYPOINT sh /usr/local/entrypoint.sh

docker-compose

​ 按照docker-compose.yaml的规则策略,配置一组服务,这些服务可以根据镜像构建并生成容器

compose指令

docker-compose基本参数

-f,指定docker-compose文件

-p,指定项目名称

–env-file,指定环境变量文件(格式key=val)

指令说明
docker-compose start启动服务(启动一组容器)
docker-compose stop停止服务(停止一组容器)
docker-compose restart重启服务
docker-compose build构建或重建服务中的镜像
docker-compose create创建服务但不启动
docker-compose down停止和删除容器、镜像、网络、数据卷
docker-compose up重新构建镜像并启动服务,-d 后台运行
docker-compose exec和docker exec功能一致, 容器名参数改为服务名
例如,docker-compose exec 服务名 /bin/bash
docker-compose kill停止服务容器,-s 参数指定信号,默认SIGINT
例如docker-compose kill -s SIGTERM
docker-compose logs显示日志, -f 跟踪实时日志,–tail 200截取最后200条日志
docker-compose pause暂停服务容器
docker-compose pull拉取compose文件中build的镜像
docker-compose push推送compose文件中build的镜像
docker-compose rm删除服务已停止的服务容器,-f强制删除
docker-compose run和docker run功能一致,在指定的服务容器上执行指令
例如docker-compose run 服务名1 /bin/bash
docker-compose scale指定服务的容器数量
例如docker-compose scale 服务名1=2 服务名2=5

yaml配置文件

#docker-compose版本号
version: '3'
#网络定义
networks:
	#自定义网络名称
	custom_network:
		#网络类型,bridge(子网段)、overlay(docker集群子网段)、host(共享宿主机IP)、none
		driver: bridge
		ipam:
			driver: default
			config:
			  #网段设置10.200.0.1到10.200.255.255
			  - subnet: 10.200.0.0/16
#数据卷定义
volumes:
	app_data:
	mysql_data:

#服务定义
services:
	#应用服务名
	app:
		#根据dockerfile构建镜像
		build:
			#dockerfile 上下文路径
			context: .
			#dockerfile文件名
			dockerfile: dockerfile
			#dockerfile中使用的变量,$apppath
			args:
				apppath: /usr/local/app
		#对外暴露端口:容器内部服务端口
		ports:
		  - "9000:8000"
		  - "9001:7002"
		#容器名
		container_name: app
		#网络配置,可加入多个网络
		networks:
		  #自定义网络的名称
		  custom_network:
		  	#指定IP4,也可以不指定IP由docker分配,也可指定IPV6  ipv6_address
		  	ipv4_address: 10.200.1.2
		#环境变量文件(格式key=val),当前yaml配置文件${key}引用
		env_file: /usr/local/docker/custom.env
		#定义容器中的环境变量
		environment:
		  MYSQL_HOST: "10.200.1.1"
		  MYSQL_DATABASE: "app_db"
		  MYSQL_USERNAME: "root"
		  MYSQL_PASSWORD: "root"
		#no,默认禁止自动重启容器;always,任何情况都保持容器启动;出现on-failure错误时才自动启动
		restart: on-failure
		#数据卷持久化定义,也可以直接 宿主机目录:容器目录 直接定义
		volumes:
		  #数据卷app_ata对应容器里/usr/local/app/logs
		  - app_data:/usr/local/app/logs
		#单向打通容器间网络,同网段可忽略
		links:
		  - mysql
		#当前服务,依赖的其它服务,其他服务启动完成才处理当前服务
		depends_on:
		  - mysql
		#deploy配置为swarm集群相关参数
		#deploy:
		  
	#mysql服务名
	mysql:
		#直接根据镜像构建服务
		image: mysql:5.7.16
		#对外暴露端口:容器内部服务端口
		ports:
		  - "3306:3306"
		#容器名
		container_name: mysql
		#网络配置,可加入多个网络
		networks:
		  #自定义网络的名称
		  custom_network:
		  	#指定IP4,  也可以不指定IP由docker分配,也可指定IPV6  ipv6_address
		  	ipv4_address: 10.200.1.1
		#直接定义容器中的环境变量
		environment:
		  TZ: "Asia/Shanghai"
		  MYSQL_DATABASE: "app_db"
		  MYSQL_ROOT_PASSWORD: "root"
		#no,默认禁止自动重启容器;always,任何情况都保持容器启动;出现on-failure错误时才自动启动
		restart: always
		#数据卷持久化定义,也可以直接 宿主机目录:容器目录 直接定义
		volumes:
		  #数据卷mysql_data对应容器里的路径
		  - mysql_data:/var/lib/mysql
		  - mysql_data:/etc/my.cnf		

DockerSwarm

​ docker多宿主机节点集群,容器南北通信使用的是docker_gwbridge/bridge网络,容器间通信使用overlay网络,南北docker_gwbridge网络其默认网段172.18.0.0/16可能存在冲突,通常需要在创建docker集群前创建网络:

docker network create --subnet 172.100.0.0/16 \
--gateway 172.100.0.1
--opt com.docker.network.bridge.name=docker_gwbridge \
--opt com.docker.network.bridge.enable_icc=false \
--opt com.docker.network.bridge.enable_ip_masquerade=true \
docker_gwbridge

​ 创建自定义overlay网络时,需要指定–attachable参数,表示不仅仅comspose文件中deploy定义的或者docker stack定义的服务容器才能加入,任何容器都能加入该网络。

docker network create --attachable --driver overlay --subnet 10.200.0.0/16 \
--gateway 10.200.0.1 \
--opt com.docker.network.driver.overlay.vxlanid_list=4096
ingress

swarm集群节点

指令说明
docker swarm init初始化docker集群节点
–advertise-addr 指定宿主机IP
–force-new-cluster 除当前节点外,都为work节点
docker swarm join --token 令牌… 管理者节点IP:2377当前docker节点加入集群
docker swarm join-token worker查看工作者节点加入令牌token
docker swarm join-token manager查看管理者节点加入令牌token
docker swarm leave当前节点离开集群
管理者节点需要–force参数强制离开
docker node ls查看所有docker节点
docker node demote hostname根据主机名,把该docker节点降为工作者节点
docker node promote hostname根据主机名,把该docker节点升为管理者节点
docker node inspect --pretty hostname查看docker节点详细信息

swarm服务管理

​ service是基于docker-compose或者docker service指令创建和管理,运行在容器之上。

指令说明
docker service create 参数… 镜像创建服务,参数说明:
–replicas 副本数(多个容器)
–name 服务名
–hostname 容器主机名
–update-delay 10s更新多个副本时,间隔时间
–update-parallelism 更新时,同时更新的副本数
–update-failure-action 更新失败的处理策略,
pause停止或者continue继续,默认pause
–rollback-monitor 容器回滚的时间间隔,默认20s
–network 指定网络
创建一个volume数据卷并挂载
–mount type=volume,src=volume名称,dst=容器目录
创建bind挂载
–mount type=bind,src=宿主目录,dst=容器目录
–mode replicated(默认)或global,
global强制每个节点只能运行服务的一个副本容器
-p 暴露端口:容器内部端口
docker service update 参数… 服务名更新服务,参数说明:
–image 新镜像
–rollback 回滚
–network-add 网络名,把容器加入新网络
–network-rm 网络名,把容器从指定网络摘除
–publish-add 暴露端口:容器端口,新增端口
–publish-rm 暴露端口:容器端口,删除端口
–relipcas 3,设置服务的容器副本数
docker service scale 服务名=副本数设置服务的容器副本数
docker service ls查看服务列表
docker service rm 服务名删除服务
docker service ps查看服务的任务信息

stack编排服务

​ service服务是运行在容器之上,stack则是运行在service之上,stack是一组service的集合

基本指令

指令说明
docker stack deploy 编排服务名(stack name)创建一个stack编排服务:
-c 指定compose编排文件
docker stack ls查看所有的编排服务stack
docker stack ps 编排服务名(stack name)查看编排服务的任务信息
docker stack rm 编排服务名删除一个编排服务stack
docker stack services 编排服务名查看一个编排服务里的所有服务信息

​ stack服务编排,在传统的docker-compose.yml文件中使用deploy节点配置实现集群方面的配置,并且使用docker-compose命令时,配置文件中的deploy节点配置会被过滤,如下所示:

#docker-compose版本号
version: '3'
#网络定义
#networks: ......
#数据卷定义
#volumes: ......

#服务定义
services:
	#应用服务名
	app:
		#其它传统docker-compose 配置......
		
		#deploy配置为swarm集群相关参数
		deploy:
			#容器副本数
			replicas: 3
			#3.0以上版本配置
			#vip(默认) Docker 为该服务分配了一个虚拟 IP(VIP), 作为客户端的访问服务的地址
			#dnsrr DNS轮询, Docker 为该服务设置 DNS 条目, 使得服务名称的 DNS 查询返回一个 IP 地址列表, 客户端直接访问其中的一个地址
			endpoint_mode: vip
			# global 每个集群节点都只有服务的一个容器
			# replicated 用户自定义容器的副本数量
			mode: replicated
			#尝试重启策略,on-failure表示出现failure错误时,
			#none 不重启, any 任何时候退出容器都要重启
			restart_policy:
				condition: on-failure
				#尝试重启的间隔,默认0秒
				delay: 0s
				#尝试重启的次数,不指定无限尝试
				max_attempts: 3
			#服务更新配置
			update_config:
				#服务更新时,一次更新多少个容器副本
				parallelism: 1
				#服务更新时,每批容器副本之间的时间间隔
				delay: 10s
				#服务更新失败的处理策略
				#默认暂停pause,continue继续更新,rollback回滚
				failure_action: pause
				#回滚期间容忍的失败率百分比,默认0
				max_failure_ratio: 0.2
			resources:
				#容器的资源限制
				limits:
					cpus: "1.5"
					memory: 1024M
				#容器兜底资源
				reservations:
					cpus: "0.5"
					memory: 256M
			#compose 3.7后新增配置
			rollback_config:
				#服务每一批回滚的容器副本数,0表示表示服务的所有容器副本一起回滚
				parallelism: 0
				#每批回滚的间隔,默认0s
				delay: 0s
				#回滚失败时的处理策略,continue继续回滚,pause暂停
				failure_action: continue
				#回滚期间容忍的失败率百分比,默认0
				max_failure_ratio: 0.2
				
		  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喂完待续

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值