linux学习

Linux文件系统和基本命令

  • Linux文件系统从一个根目录("/")开始
  • 不光是文件,所有的硬件资源,也是以文件路径形式出现

cd

切换目录

cd /
ls

# 超级管理员root的主目录
# 其他用户主目录默认都在 /home/xxxxxxxxx
cd /root/
ls

# ~就表示用户的主目录
cd ~

# 不写路径,也是回到自己的主目录
cd

ls 文件列表

目录列表

-a 显示全部,包括隐藏文件(.xxx)

-l 长格式

-h 人性化显示,Kb,Mb,Gb

-d 显示目录本身

-i 显示文件数字id

# 列出当前目录的文件
ls

# 列出指定目录下的文件
ls /etc/

# 列出指定的单个文件
ls /etc/yum.conf

# -l 参数:长信息
ls -l /etc/

10个字段:

  • 第一个字符:
    • - 表示文件
    • d 表示文件夹
  • rw-r--r--:读写权限,分三段:所有者、用户组、任何人
    • r:读
    • w:写
    • x:执行
  • 文件数量
    • 文件,就是1
    • 文件夹,文件夹中的文件数量,还包含".."(上一层目录)
  • 用户
  • 用户组
  • 文件大小
  • 时间
  • 文件名
# -a 列出所有文件,包括隐藏文件
ls -l -a

Linux中的隐藏文件是以“.”开头的文件

列表命令的别名:

# ll是"ls -l"的别名
ll

pwd

查看当前所在的目录路径

pwd

文件或目录操作

mkdir

创建目录 make directory

  • -p 逐层创建多层目录
  • -m 设置文件夹权限
cd ~

mkdir d1
mkdir d2
mkdir d3

ls -l

# 不能创建
mkdir aa/bb/cc 

# 逐层创建,创建多层目录
mkdir -p aa/bb/cc

ls -l
ls -l aa
ls -l aa/bb

# 目录中包含两个特殊子目录:
# . 当前目录
# .. 上一层目录

mkdir -m 777 abc
ll

rmdir(不常用)

删除目录,remove directory

只能删除空目录

cd ~

rmdir aa aa不是空目录,删不掉

rmdir d1

touch

创建文件

cd ~

touch f1
ls -l
touch aa/f2
touch aa/bb/f3
ls -l aa
ls -l aa/bb

rm

删除文件,remove,也可以删除目录

-r 删除目录

-f 无需确认

cd ~

rm f1

ls -l

rm aa 不能删除

rm -r aa

ls -l

 

touch f1

mkdir -p aa/bb/cc

touch aa/f2

touch aa/bb/f3

无需确认

rm -f f1

rm -rf aa

cp

复制,copy

-r 复制目录

-p 保持文件属性,一般指的是修改时间

cd ~

cp /etc/services .
cp /etc/services s1
ls -l
ls -l /etc/services
cp -p /etc/services s2

ls -l

mkdir -p aa/bb/cc
touch aa/f2
touch aa/bb/f3

cp -rp aa a2  -r复制目录
ls a2
ls a2/bb

mv

文件移动或改名 move

cd ~

# 文件s1移动到aa目录
mv s1 aa 
ls -l
ls -l aa


mv s2 s3 文件s2改名成s3

ls -l

防火墙

1、firewalld的基本使用

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld

开机禁用 : systemctl disable firewalld

开机启用 : systemctl enable firewalld

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service

关闭一个服务:systemctl stop firewalld.service

重启一个服务:systemctl restart firewalld.service

显示一个服务的状态:systemctl status firewalld.service

在开机时启用一个服务:systemctl enable firewalld.service

在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

3.配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

如何开启一个端口

添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)

重新载入
firewall-cmd --reload

查看
firewall-cmd --zone= public --query-port=80/tcp

删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
 

docker

(一)docker 基础命令


启动docker

systemctl start docker

关闭docker

systemctl stop docker

重启docker

systemctl restart docker

docker设置随服务启动而自启动

systemctl enable docker

查看docker 运行状态

------如果是在运行中 输入命令后 会看到绿色的active

systemctl status docker

查看docker 版本号信息

docker version

docker info

docker 帮助命令

忘记了某些命令便可使用此进行查看与回顾

docker --help

比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用

docker pull --help

(二)docker 镜像命令


查看自己服务器中docker 镜像列表

docker images

搜索镜像

docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
 

拉取镜像 不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本

docker pull 镜像名 
docker pull 镜像名:tag

运行镜像 ---拉取一个tomcat 

docker run 镜像名
docker run 镜像名:Tag

ex:

docker pull tomcat

docker run tomcat

发现咱运行后 出现tomcat 默认占用的8080 端口 说明该镜像已经是启动了 ,鼠标没有回到咱服务器上了 ,使用 Ctrl+C (注:此方式虽然可以退出容器,但此种命令操作方式却是错误的,详细缘由请见下文的容器命令)

docker中 run 命令是十分复杂的 有什么持久运行 映射端口 设置容器别名 数据卷挂载等

删除镜像 ------当前镜像没有被任何容器使用才可以删除

#删除一个
docker rmi -f 镜像名/镜像ID

#删除多个 其镜像ID或镜像用用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
强制删除镜像

docker image rm 镜像名称/镜像ID

镜像的基础命令就到这里 下方会使用更复杂的 docker run 命令 来根据镜像启动容器

保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像

命令:

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字

exmaple:

docker save tomcat -o /myimg.tar

加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

docker load -i 镜像保存文件位置

加载文件 恢复为镜像


查看镜像 测试镜像功能是否正常

我们来把解压的镜像 run一下。

镜像标签
有的时候呢,我们需要对一个镜像进行分类或者版本迭代操作,比如我们一个微服务已经打为docker镜像,但是想根据环境进行区分为develop环境与alpha环境,这个时候呢,我们就可以使用Tag,来进对镜像做一个标签添加,从而行进区分;版本迭代逻辑也是一样,根据不同的tag进行区分

app:1.0.0 基础镜像
# 分离为开发环境
app:develop-1.0.0   
# 分离为alpha环境
app:alpha-1.0.0   

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

docker tag 源镜像名:TAG 想要生成新的镜像名:新的TAG

# 如果省略TAG 则会为镜像默认打上latest TAG
docker tag aaa bbb
# 上方操作等于 docker tag aaa:latest bbb:test

ex:

# 我们根据镜像 quay.io/minio/minio 添加一个新的镜像 名为 aaa 标签Tag设置为1.2.3
docker tag quay.io/minio/minio:1.2.3 aaa:1.2.3

# 我们根据镜像 app-user:1.0.0 添加一个新的镜像 名为 app-user 标签Tag设置为alpha-1.0.0
docker tag app-user:1.0.0 app-user:alpha-1.0.0

(三)docker 容器命令


前言已经说了 docker 容器 就好比 咱java中的new出来对象(docker run 镜像 产生一个该镜像具体容器实例),docker 容器的启动需要 镜像的支持

先放上 docker 容器查看命令

查看正在运行容器列表

docker ps

查看所有容器 -----包含正在运行 和已停止的

docker ps -a

容器怎么来呢 可以通过run 镜像 来构建 自己的容器实例

运行一个容器

# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行)  --name 给要运行的容器 起的名字  /bin/bash  交互路径
docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash 

例如我们要启动一个redis 把它的别名取为redis001 并交互式运行 需要的命令 —我这里指定版本号为5.0.5

#1. 拉取redis 镜像
docker pull redis:5.0.5
#2.命令启动
docker run -it -d --name redis001 redis:5.0.5 /bin/bash
 

#3.查看已运行容器
docker ps
发现看到了 redis 使用了6379 端口 那么我们在关闭防火墙或开启了安全组的情况下 是否可以进行访问呢?

为了 区分 咱们使用linux 命令 查看一下

# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp

默认情况下,我们是无法通过宿主机(安装docker的服务器)端口来直接访问容器的 ,因为docker容器自己开辟空间的端口与宿主机端口没有联系…

如果外部想要访问容器,那必须得让容器中的端口与宿主机的端口建立联系绑定起来,这个正式的概念叫做 容器端口映射

容器端口映射演示

首先停止容器

# 先停止之前运行的 redis 容器 
docker stop 容器名/容器ID

然后删除容器

#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)

容器端口与服务器端口映射

命令:

-p 宿主机端口:容器端口

还是使用前方的 redis 镜像 尝试 将6379端口 映射到服务器的8888 如果成功了的话 那么咱们访问服务器的8888端口就会访问到咱们的 docker 中 的容器 redis002

-p 8888:6379 解析 将容器内部的 6379端口与docker 宿主机(docker装在哪台服务器 哪台服务器就是宿主机)8888 端口进行映射 那通过外部访问宿主机8888端口 即可访问到 docker 容器 6379 端口了 

docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash
 

进入容器

方式一 

docker exec -it 容器名/容器ID /bin/bash

#ex
docker exec -it redis001 /bin/bash

进入容器方式二 —推荐使用 exec 方式

docker attach 容器名/容器ID
 

那怎么退出容器呢 ? 

从容器内 退出到自己服务器中 需注意 两个退出命令的区别

#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit

# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

停止容器

docker stop 容器ID/容器名

重启容器

docker restart 容器ID/容器名

启动容器

docker start 容器ID/容器名

kill 容器

docker kill 容器ID/容器名
 

容器文件拷贝 —无论容器是否开启 都可以进行拷贝 

#docker cp 容器ID/名称:文件路径  要拷贝到外部的路径   |     要拷贝到外部的路径  容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
#从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径


查看容器日志

docker logs -f --tail=要查看末尾多少行 默认all 容器ID


我们在运维的时候,通常给一些软件喜欢设置开机自启动,例如 mysql、redis,这样测试环境服务器重启时可节省不少运维时间成本,那么我们如果是docker容器 是否也可以设置开机自启动容器呢?

启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动

ex:

docker run -itd --name redis002 -p 8888:6379 --restart=always  redis:5.0.5 /bin/bash

什么是数据挂载?

简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!

具体请参考:docker 文件分层与数据卷挂载

命令:

-v 宿主机文件存储位置:容器内文件位置

如此操作,就将 容器内指定文件挂载到了宿主机对应位置,-v命令可以多次使用,即一个容器可以同时挂载多个文件

-v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置 -v 宿主机文件存储位置:容器内文件位置

示例:

# 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
docker run -d -p 6379:6379 --name redis505 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf  redis:5.0.5 --requirepass "password"

不想删容器,又想让这个容器设置开机自启动,那么我们修改其启动配置即可!

命令:

docker  update --restart=always 容器Id 或者 容器名

docker container update --restart=always 容器Id 或者 容器名

更换容器名

docker rename 容器ID/容器名 新容器名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值