不保证内容 100% 准确无误!!!如有错误欢迎留言
# Linux 指令集合
# 登录系统
1 | ssh username@IP -p port |
- username 用户名
- IP 服务器 IP
- port 登录端口
exit / ctrl + D 可以退出本次登录
# ROOT 用户登录
仅第一次可用:
- 登录用户账户
- 执行命令
sudo passwd root
- 会出现
[sudo]password for username:
- 输入目前登录用户的账户和密码
- 当显示
NewPassword:
时输入新的 ROOT 账户的密码 Retype New Password:
再次输入刚刚设定的 ROOT 账户密码进行确认
即可重置 ROOT 账户的密码
接着执行命令 su - root
即可切换为 ROOT 账号
# 文本编辑器 vi
# vi 文件
- 如果命令指定的文件不存在,则创建文件
- 如果命令指定的文件存在,则打开该文件
# 命令模式
- h 光标左移一个字符
- j 光标下移一个字符
- k 光标上移一个字符
- l 光标右移一个字符
- x 删除光标所在字符
- dd 删除光标所在行
- ndd n 为数字,表示删除当前光标及下面的 n 行
- dG 删除当前行以下的所有内容
- d$ 删除当前光标到当前光标所在行的结尾
- d0 删除当前光标到当前光标所在行的开头
- dw 删除光标处到词尾的内容
- gg 把光标移到文件开始的位置
- G 将光标移到文件末尾
- ctrl + F 上一页
- ctrl + B 下一页
- 0 把光标移动到所在行的行首
- $ 把光标移动到所在行的行尾
- pageup 向上翻页
- pagedown 向下翻页
- yy 复制光标所在行
- p 粘贴
- v 移动光标进入选择模式
- y 复制选中的内容
- nyy n 为数字,表示复制当前光标及下面的 n 行
- u 撤销刚才的操作
- ctrl + R 恢复更改
- . 重复刚才所做的操作
# 插入模式
按下键盘上的 i 进入插入模式,在左下角会显示 -- INSERT --
字样
按下键盘上的 a 也可以进入插入模式,不过是在光标后面插入内容
- 0 在光标上一行之后插入一行
- o 在光标所在行之后插入一行
- l 在行的开头进入插入模式
- A 在行的结尾进入插入模式
- esc 退出插入模式,进入命令模式
# 底行模式
- :wq 保存文件并退出
- :w 保存文件但是不退出 vi
- :q! 不保存文件强制退出编辑器
- :set paste 设置粘贴模式 (用于从外部复制内容进来不会导致内容错乱)
- :set nu 显示行号
- :set nonu 关闭行号显示
# vi 编辑器其他
- /[string] string 代表需要查询的内容 比如
/abc
即查询 abc - n 查找下一个
- N 查找上一个
# 替换内容
1 | :[range]/[string]/[replace]/[mode] |
- range 查找要替换内容的范围
- string 要被替换的内容
- replace 替换后的内容
- mode 替换模式
# 文件系统
Linux 的文件路径是区分大小写的
pwd 查询当前工作目录
# cd 命令 - 更改工作目录
- cd / 路径 / 改变工作目录
- cd… 回到上一级目录
# 绝对路径与相对路径
- 绝对路径 开始于根目录,沿着目录层级,一直到达想要的目录或文件
- 相对路径 相对的当前目录 其中 . 指的是当前目录 … 指的是上一层目录,即当前目录的父目录
./test.txt 在当前目录下寻找 test.txt
./ 路径 / 路径 / 文件 也可以打开路径 / 路径 / 文件
…/ 文件 打开上一层目录中的某文件
…/…/…/ 文件 打开上 3 层目录中的文件
# ls 命令 - 查看文件 / 文件夹
查看目录下的文件 / 文件夹
1 | ls [-a / -l / -h] [dir] |
- -a all,列出所有文件
- -l 以列表形式展示内容,并显示更多信息 可以简写为 ll
- -lh 显示文件,文件夹大小
- -la 查看隐藏的文件详情
- dir 目录
通过 ls 来确定当前的工作目录并不恰当,我们可以使用 pwd
来查看当前所在的工作目录
# cp 命令 - 复制
复制命令
1 | cp [-r] [source] [destination] |
- -r 拷贝目录 同时会将该目录下的所有文件和文件夹都拷贝过去
- source 源文件 / 目录
- destination 目的文件 / 目录
1 | cp /data/config.yaml ./config/ |
cp 命令也可以使用通配符
# mv 命令 - 移动 / 重命名
移动 / 重命名命令
1 | mv [source] [destination] |
- source 要被移动的源文件 / 目录
- destination 目标目录 / 文件新名称 / 目录的新名称 (要求该目录不存在)/ 要移动进去的目录 (要求该目录存在)
# grep 命令 - 查找
在文件中查找字符串
1 | grep [keywords] [file] [-n] [-C] [-B] [-A] [line] |
- keywords 要查找的关键字
- file 被查找的文件
- -n 会将行号和每一行的内容都输出
- -n -C 将查找到所在关键字的这一行的上下 line 行信息都输出出来
- -n -B 将查找到所在关键字的这一行的上面 line 行信息都输出出来
- -n -A 将查找到所在关键字的这一行的后面 line 行信息都输出出来
1 | grep candy Candy_note -n -C 3 |
# wc 命令 - 关键字数量统计
统计在一个文件中出现的关键字数量
1 | wc [-c -m -l -w] [file] |
- -c 统计字节数量
- -m 统计字符数量
- -l 统计行数
- -w 统计单词数量
# ln 命令 - 创建 “快捷方式”
创建一个类似于 Windows 中的快捷方式
1 | ln -s [source] [destination] |
- source 被链接的文件 / 文件夹路径
- destination 目的地路径
# scp 命令 - 远程拷贝文件
从远程设备中拷贝文件过来
1 | scp [localfile][filename] [username]@[address]:[destinationPath] |
我们使用 B 主机进行拷贝,就必须要有 B 主机的用户账号。加入 B 主机的账号是 candy1……
1 | scp /home/candy0/note.txt candy1@luckyfuture.cc:/home/candy1/ |
# which 命令 - 查找命令
可以查到被查找的命令在哪个路径下
1 | which [command] |
假如我要查看 ls 命令在哪个路径下:
1 | which ls |
# find 命令 - 查找文件
查找文件在哪个路径下
1 | find [startPath] -name ["filename"] |
- startPath 起始查找路径
- filename 文件名
即从路径开始以文件名查找文件
也可以使用通配符来查找文件
1 | find [stratPath] -size [+/-] [n] [kMG] |
- stratPath 起始查找路径
- +/- + 代表大于 - 代表小于
- n 代表大小中数字部分
- kMG k: 代表 kb,需小写 k;M: 代表 MB;G: 代表 GB
# 用户
ROOT 账号拥有系统的最高权限
每一个用户账号都对应一个用户 ID,其被存储在文件 /etc/passwd
中
# 添加用户
1 | adduser username |
- username 新用户的用户名
如果不添加组参数系统会默认创建一个组
1 | adduser --ingroup root username |
直接创建一个属于 root 用户组的用户
# 更新用户密码
如果是非 ROOT 账户,则只能更改自己的密码。ROOT 账户可以更改所有人的密码
1 | passwd username |
- username 要被更改密码的账户名 **(仅限 ROOT 账户使用)**
# 删除用户
1 | deluser username |
- username 要被删除的账户名
删除该用户 **(仅限 ROOT 账户使用)**
# 切换用户
1 | su [-] username |
- - 使用该用户的用户环境
- username 要被切换的用户名
如果是 root 账号切换不需要密码,普通用户则需要密码
若一直套娃切换,系统会保留层级关系;在使用 ctrl+D
时会退出当前账号返回上一个账号
1 | getent passwd |
查看当前系统中有哪些用户
# 用户组
# 查看所有用户组
1 | groups |
查看当前账号用户组
1 | groups [username] |
- username 用户名
查看其他用户所属于的用户组
1 | grep '[keyword]' /etc/group |
- keyword 组名称关键字
查看用户组里的用户,比如查看以 sudo 开头的组的用户:
1 | grep '^sudo' /etc/group |
其中,这里的 keyword 可以使用正则表达式
# 新增 / 删除用户组
1 | addgroup [NewGroupName] |
- NewGroupName 新增组的名称
新增一个用户组
1 | delgroup [groupname] |
- groupname 要被删除的组名称
删除该用户组
# 改变用户所在组
1 | usermod -g [groupname] [username] |
- groupname 组名称
- username 用户名
将用户添加的指定的组中
1 | usermod -G [groupname1] [groupname2]… [username] |
将用户设定到这些组当中
# 文件权限
在 Linux 系统中,权限通常可以按照用户权限分为 3 种类型,以及对文件的 3 种权限方式
# 用户权限
- owner 即文件的所有者,也是该文件的创建者
- grouper 文件所有者,即文件所在的用户组及里面的用户
- other 其他用户,即非 owner 和非 grouper
# 文件权限
- 读 使用英文字母 r 表示,可以查看目录 / 文件内的内容
- 写 使用英文字母 w 表示,可以修改文件 / 目录内的内容
- 执行 使用英文字母 x 表示,可以执行文件 / 使用
cd
命令进入目录
# drwxrw-rw-
权限细节总共分为 10 个位置
-
- - / d / l 第一位,**-** 表示文件;d 表示文件夹;l 表示软链接
- 第 2-4 位 这三位为文件所属用户权限
- 第 5-7 位 这三位位文件所属用户组中的用户权限
- 第 8-10 位 其他用户权限
假设一个权限是 **drwxrw-r–** 则表示
- d 这是文件夹
- rwx 所属用户权限,在该例子中该文件所有者可以对该文件进行读、写、执行
- rw- 所属用户组权限,在该例子中该文件所有者所在的用户组中的用户可以对该文件进行读、写操作
- r– 表示其他用户的权限,在该例子中其他用户对该文件仅可读
# 数字所对应的权限
- 0 无任何权限,即 **—**
- 1 仅有 x 权限,即 **–x**
- 2 仅有 w 权限,即 **-w-**
- 3 w 和 x 权限,即 **-wx**
- 4 仅有 r 权限,即 r–
- 5 r 和 x 权限,即 r-x
- 6 r 和 w 权限,即 rw-
- 7 全部权限,即 rwx
例如, 751
即为 rwx (7) r-x (5) --x (1)
# 修改文件访问权限
1 | chmod [-R] [who] [op] [permission] [file/dir] |
- -R 指对文件夹内的全部内容应用相同操作
- who 表示用户类型 (见下表)
- op 表示动作(+ 表示加上 permission 指定权力,- 表示取消 permission 指定的权力
- permission 存取权限(r: 可读,w: 可写,x: 执行)
用户类型表
- **u:** 文件拥有者
- **g:** 该文件拥有者的同组用户
- **o:** 其他人
- **a:** 所有人
1 | chmod u+w file1 //该命令添加了拥有者对file1文件的写权限 |
当然除了这种方式,我们也可以使用数字进行修改权限的修改
1 | chmod [who] [op] [Num] [file/dir] |
比如,给当前目录下的文件添加对自己的 777 权限:
1 | chomod 777 file1 |
# 文件归属权
1 | chown [-R] [User][:][UserGroups] [file1] [file2] […] |
改变文件所有者及文件所在组的用户
- -R 对文件夹内全部内容应用相同的规则
- User 修改所属用户
- :UserGroups 修改所属用户组,其中带:的是用户组,不带:的是用户
1 | chown candy file1 //把文件file1的所有者变更为用户candy |
也可以使用 chgrp 命令改变文件所有者组:
1 | chgrp [opt] [groups] [file] |
- opt 选项
- groups 组名称
- file 文件名称
# sudo
sudo 是以 root 账号的权限执行命令一次
哪些账户可以使用 sudo 权限来运行是在 /etc/sudoers
里进行配置的
1 | sudo -u [user] [command] |
- user 以该用户的权限来执行命令
- command 要执行的命令
1 | sudo [command] |
以 ROOT 权限来执行这条命令
可以直接将某个用户加入 sudo 用户组(使用 usermod 命令添加),就可以在任何地方,以任何账号权限,运行任何程序
# 进程
# ps 命令 - 进程命令
1 | ps |
查看进程信息
1 | ps -f |
查看详细的进程信息
1 | ps -u [user] |
- user 用户名
显示该用户所创建的进程信息
1 | ps -e |
显示当前所有正在运行的进程信息
1 | ps -ef |
显示当前所有正在运行的所有系统进程信息
1 | ps -ef | grep [keyword] |
- keyword 要被查找进程的关键字
查找该进程
1 | ps -ef | grep [keyword] | grep -v [unkeyword] |
- keyword 要被查找进程的关键字
- unkeyword 不包含的(排除)关键字
查找一个进程,但是这个进程不显示包含排除关键字的进程
# nohup - 静默运行
一般来说,有些程序如果关闭终端的话进程有可能会被结束掉,因此可以在命令上加上 nohup
在程序前台运行的情况下,使用快捷键 ctrl+C
终止进程
# kill 命令 - 杀死进程
1 | kill -9 [PID / name] |
- PID / Name 该程序的 PID 或程序名
- -9 表示强行杀死
# 重定向
在 shell 中输入命令时,可以使用 >
符号将输入命令后的执行结果信息输出到指定文件中
1 | ps > [out] |
上面的命令会将原本要输出在 stdout(可以理解为终端的输出)输出到文件中
如果要将 stdout 和 stderr(屏幕显示的报错信息)同时输入到一个文件 err.txt 中可以使用 &>
符号
1 | command &> err.txt |
单独重定向 stderr 的符号是 2>
1 | command > [out] 2> err.txt |
stdin 重定向符号是 <
,可以将原本要显示到终端上的内容输出到文件中
# echo 命令
在命令行内输出指定的内容
1 | echo [string] |
- string 要输出的指定内容
带有空格或 \ 等特殊符号的内容,建议使用双引号包含。如果不适用双引号的情况下,空格后面很容易被识别为另一个参数,虽然说影响不是很大就是了(
1 | echo `[commad]` |
- commad 被 `` 包含的内容会作为命令去执行,然后结果会被 echo 打印在屏幕上
# > 和 >>
- > 将左侧命令的结果覆盖写入到右侧指定的文件中
- >> 将左侧命令的结果追加写入到右侧指定的文件中
# tail 指令
tail 指令可以查看文件尾部的内容,追踪文件的最新更新。也就是从后向前看
1 | tail [-f] [-num] [filedir] |
- -f 表示持续跟踪
- -num 表示从后向前看多少行,默认 10 行
- filedir 要查看的文件路径
例如,查看 text.txt 文件后 5 行的内容
1 | tail -5 text.txt |
# 管道符 |
在 Linux 操作系统中,有时候需要将一个命令输出的内容作为另一个命令的输入内容,可以使用 |
操作符来实现,并且管道符可以嵌套
1 | icommand | [othercommand1] | [othercommand2] |
- icommand 要输出的命令
- othercommand 其他命令
# 打包与压缩
# tar 命令 - 针对 tar 压缩包
1 | tar [-c -v -x -f -z -C] [para0] [para1] […] |
- -c 创建压缩文件,用于要压缩一个文件的时候
- -v 显示压缩和解压缩的进度
- -x 解压缩而不是压缩
- -f 要创建的文件,或者说要解压文件,-f 选项必须在所有选项中处于最后一个
- -z gzip 模式,不适用 - z 就是普通的 tarball 格式,一般处于第一位
- -C 自定义解压路径
比如解压一个 test.tar,并将其解压缩到 /home/candy/
1 | tar -xvf test.tar -C /home/candy/ |
如果要压缩 /data
路径出来一个名为 data.tar 压缩包……
1 | tar -cvf data.tar ./data/* |
也可以仅查看一个压缩包
1 | tar -tvf data.tar |
也可以将新文件添加进压缩包中
1 | tar -rvf data.tar my_pic.jpg |
# gzip 命令 - 针对 gz 压缩包
gz 压缩包可以将压缩包体压缩至很小
1 | gzip -d [file.gz] |
解压缩一个名为 file.gz 的压缩包
同时 gzip 和 tar 可以联合使用
1 | tar -zcvf [pag.tar.gz] [file] [dir] |
- pag.tar.gz 压缩包名
- file 文件
- dir 目录
可以直接将文件压缩成.tar.gz 格式
1 | tar -zxvf [pag.tar.gz] |
解压缩一个为.tar.gz 的压缩包
# zip 命令 - 针对 zip 压缩包
1 | zip [-r] [file.zip] [dir] |
- -r 压缩目录
- file.zip 压缩包名
- dir 路径
压缩一个 zip 格式的压缩包
1 | unzip [file.zip] |
解压缩一个 zip 格式的压缩包
# 系统相关命令
# top 命令 - 查看系统进程信息
1 | top [-p -d -c -n -b -i -u] [PID] |
- -p 只显示某个进程的信息
- -d 设置刷新时间,默认是 5s
- -c 显示产生进程的完整命令,默认是进程名
- -n 指定刷新次数,比如 top-n3,刷新输出 3 次后退出
- -b 以非交互非全屏运行,以批次的方式执行 top,一般配合
-n
指定输出几次统计信息,将输出重定向到指定文件 - -i 不显示任何闲置 (idle) 或无用 (zombie) 进程
- -u 查找特定用户启动的进程
在 top 的页面上,按 1 切换核心的占用情况,按下大写 P 可以按照 CPU 占用率高低来排序,大写 M 按照内存占用高低来排序。按下 q 即可退出
top 命令内容较多,这里不多介绍
# 网络相关命令
1 | ip addr |
查看网络接口、IP 地址
1 | ping [ip] |
连通性测试
1 | hostname |
查看主机名
1 | hostnamectl set-hostname [name] |
修改主机名为 name
1 | netstat |
查看当前所有占用网络端口的程序
1 | netstat -anp | grep [port] |
- port 端口号
查看指定端口的占用情况
1 | netstat [-a -t -u -n -l -p -r] |
- -a 显示所有选项,默认不显示 LISTEN 相关
- -t 仅显示 TCP 相关选项
- -u 仅显示 UDP 相关选项
- -n 不显示端口协议名,显示端口数字
- -l 只显示 Listen (监听) 的状态端口
- -p 显示建立相关链接的进程 PID
- -r 显示路由信息、路由表
netstat 命令内容较多,这里不多介绍
1 | nmap [ip] |
显示端口占用情况
1 | sar [-n] DEV [num1] [num2] |
- -n 查看网络
- DEV 查看接口,默认为 DEV 即可
- num1 数字,表示刷新间隔
- num2 数字,表示刷新次数
网络状态监控
# wget /curl 命令 - 网页 / 下载命令
1 | wget [-b] [URL] |
- -b 后台下载,并且将日志写入当前工作目录的
wget-log
文件中 - URL 文件地址
即可将一个文件下载到当前工作目录
1 | curl [-o] [URL] |
- -o 用于下载文件,当 URL 为文件链接时,可以使用 **-o** 来保存文件
- URL 要发起请求的网络地址
curl 类似于浏览器,可以查看网页,也可以下载文件
# systemctl 系统服务命令
用于启动,关闭,重启服务
1 | systemctl status [service] |
- service 服务名
查看该服务状态
1 | systemctl start [service] |
启动该服务
1 | systemctl stop [service] |
停止该服务
1 | systemctl restart [service] |
重启该服务
1 | systemctl enable [service] |
开启服务开机自启动
1 | systemctl disable [service] |
关闭服务开机自启动
# apt 服务(yum)
由于我使用的是 Ubuntu,所以要使用 apt 命令。如果你使用的是类如 Debian 等系统,可以使用 yum
1 | apt install [package] |
- package 要安装软件的包名
安装一个软件包
1 | apt list --installed |
显示所有已经安装的程序包
1 | apt list [package] |
显示 package 程序包的安装情况
1 | apt remove [package] |
移除 package 程序包
1 | apt [-y] [install | remove | search] [package] |
- -y 自动确认,无需手动确认安装和卸载过程
- install 安装
- remove 卸载
- search 搜索
- package 包名
# 时间和时区
1 | data [-d] ["+String"] |
- -d 按照指定的字符串显示日期,一般用于日期计算
- String 通过特定的字符串标记,来控制显示的日期形式
# 磁盘命令
1 | df [-h] |
- -h 以更人性化的单位显示
查看硬盘的使用情况
1 | iostat [-x] [num1] [num2] |
- -x 显示更多信息
- num1 数字,表示刷新间隔
- num2 数字,表示刷新次数
# Screen 命令 - 屏幕
# 创建屏幕
1 | screen -S [screen_name] |
- screen_name 要创建的屏幕名称
# 退出屏幕但不删除当前屏幕
-
ctrl+A ctrl+D
-
screen -d
<!--code92-->
- -r 恢复屏幕
- -R 尝试恢复屏幕,若恢复失败则创建一个新的屏幕
- -dr 顶掉之前的用户并恢复屏幕
# 显示所有屏幕
1 | sreen -ls |
# 检查屏幕,并删除不能使用的屏幕
1 | screen -wipe |
# 删除屏幕
1 | screen [-XS] [-X] [screen_name] quit |
- -XS 在屏幕外删除,需要写屏幕名
- -X 删除当前屏幕,不需要写屏幕名
# 环境变量
类似于 windows 中的环境变量,Linux 也是使用 PATH 来定义值
1 | export [variable] = [count] |
- variable 变量名
- count 变量值
这样可以临时设置一个环境变量
如果要永久生效:
- 针对当前用户的环境变量:
~/.bashrc
文件中进行修改 - 针对所有用户,即系统环境变量:
/etc/profile
中的 source 配置文件
这些修改都是立即生效的
# Docker 指令集合
# docker 服务
1 | systemctl start docker |
启动 docker 服务
1 | systemctl stop docker |
停止 docker 服务
1 | systemctl restart docker |
重启 docker 服务
1 | systemctl enable docker |
设置 docker 服务开机自启
# docker 的使用
1 | docker run [-d] [-v localdata:dockerdir] [--network + network_name] [-p localport:dockerport] [-e KEY = VALUE] [--name repository:tag] |
- -d 让容器在后台静默运行
- -v 映射数据卷;**localdata:** 本地数据卷 : **dockerdir:** 容器内目录;本地目录必须以
/
或者./
开头,必须为绝对路径,如果以名称开头就会被识别为数据卷而非本地目录 - –network 网络设置;**network_name:** 网络名 可以直接在运行时将该容器加入指定网络
- -p 把容器内的内部端口映射到外部机器的端口上;**localport:** 本机端口 : **dockerport:** 容器内部端口
- -e 设置环境变量;**KEY:** 键 : **VALUE:** 值
- –name 容器名称;**repository:** 镜像名 : **tag:** 镜像的版本
1 | docker stop [repository] |
停止镜像中的进程
1 | docker start [repository] |
启动镜像中的进程
1 | docker ps [-a] |
- -a 查看所有容器的状态
查看容器的运行状态,默认仅查看正在运行的容器
1 | docker logs [-f] [repository] |
- -f 持续输出日志
- repository 容器名
输出容器日志
1 | docker exec [-it] [repository] [bash] |
- -it 可对容器内进行命令交互
- bash 任意指令
进入容器内部执行指令
# docker 镜像
1 | docker pull [repository] |
仅下载镜像
1 | docker images |
查看下载的镜像
1 | docker rmi [repository:version] |
删除下载的镜像
1 | docker build -t [repository] [dockerfile] |
- dockerfile dockerfile 文件所在的目录
构建镜像
1 | docker save [-o] [name:version] |
- -o 选择保存时命名
保存构建的镜像
1 | docker load [-i / -q] [repository] |
- -i 读 tar 文件
- -q 静默加载
加载别人构建的对象
1 | docker push |
将你的镜像推送上去
# docker 数据
数据卷的英文叫:Volume
这是一个虚拟的目录,是容器里内目录与本机目录之间映射的桥梁,类似于 Windows 的虚拟硬盘
默认对应的本机系统的目录: var/lib/docker/volumes
1 | docker volume creat [volume] |
- volume 数据卷名
创建数据卷
1 | docker volume ls |
查看所有数据卷
1 | docker volume rm [volume] |
删除指定数据卷
1 | docker volume inspect [volume] |
查看某个数据卷详情
1 | docker volume prune [volume] |
清空数据卷
1 | docker inspect [repository] |
查看容器详情
# docker 网络
默认情况下,所有的容器都是以 bridge 的方式链接到 docker 的一个虚拟网卡上的
这个网卡的默认网关是 172.17.0.1/16
,我们也可以自定义
加入自定义网络的容器可以通过网卡互联,容器名之间可以相互访问
1 | docker network creat [network] |
- network 网络名称
创建一个网络
1 | docker network ls |
查看所有网络
1 | docker network rm [network] |
删除指定网络
1 | docker network prune |
删除未使用网络
1 | docker network connect [network] [repository] |
- repository 容器名称
使指定容器加入指定网络
1 | docker network disconnect [network] [repository] |
使指定容器离开某网络
1 | docker network inspect |
查看网络的详细信息
# dockerCompose
docker compose 通过一个单独的 docker-compose.yml
模板文件来定义一组相关联的应用容器,可以实现多个相互关联容器的快速部署
关于 docker compose 的内容,这里不多赘述
1 | docker compose [command] [options] |
options:
- -f 指定 compose 文件的路径及名称
- -p 指定 project 名称
- -d 后台静默运行
command:
- up 创建并启动所有容器
- down 停止并移除所有容器与网络
- ps 列数所有启动的容器
- logs 查看指定容器的日志
- stop 停止容器
- start 启动容器
- restart 重启容器
- top 查看运行的进程
- exec 在指定的正在运行的容器种执行命令