Linux及docker基础知识

2021/5/10 7:27:42

本文主要是介绍Linux及docker基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

命令 -help 来看命令怎么使用,比如 cat -help

cd :切换目录

ls :列出目录
-a参数:all,查看全部文件,包含隐藏文件
-l参数:列出所有文件,包含文件的属性和权限,没有隐藏文件

pwd:显示当前用户所在目录

mkdir:创建一个文件夹
mkdir -p test1/test2/test3 :创建层级目录

rmdir:删除文件夹 ,只能删除空的目录,如果下面存在文件,需要先删除文件
rmdir -p test1/test2/test3 :递归删除多个目录用-p即可,删除层级目录

rm:删除文件或目录
-f 忽略不存在的文件,不会出现警告
-r 递归删除目录
-i 互动,删除询问是否删除

rm -rf / 删除系统中所有的文件

mv:移动文件或目录 , 重命名
-f 强制移动
-u 只替换已经更新过的文件

mv 文件名 文件夹路径 :移动文件到文件夹路径下
mv install.sh xxx

mv 文件名 文件名2 :将文件名的名称改为文件名2

cp:复制文件或目录,如果要复制到的目录下面已经存在文件,则提示是否覆盖

chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下所有文件的属组也会更改

chown:更改文件属主,也可以同时更改文件属主
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名


修改文件权限:

chmod:更改文件9个属性
chmod [-R] xyz 文件或目录


文件类型 属主权限 属组权限 其他用户权限
0 1 2 3 4 5 6 7 8 9
d rwx r-x r-x
目录文件 读写执行 读写执行 读写执行
r:4 w:2 x:1

rwx = 4+2+1 = 7
rw- = 4+2 = 6
r-x = 4+1 = 5
r-- = 4
依此类推


chmod 777 文件名
chmod 761 文件名


drwxr-x---

第一字符代表文件是目录、文件或链接文件:
[d]:目录
[-]:文件
[l]:链接文档(link file)
[b]
[c]


文件内容查看:
cat 由第一行开始显示文件内容,用来读文件,配置文件
tac 从最后一行开始显示,可以看出tac是cat的倒着写
nl 显示的时候,顺道输出行号,常用
more 一页一页的显示文件内容 ,空格代表翻页,enter代表看下一行 ,

less与more类型,但是比more更好,可以往前翻页(空格翻页,上下键来翻动上行下行,q退出查看)

head 只看头几行
head -n 20 文件名
-n:代表要看几行
tail 只看尾几行

查看文件内容时,用 / 来进行字符串查找,向下查询 比如 /xxx 在文件中查找xxx的字符串,高亮显示
用 ? 来进行向上查询
进行查询的时候用 n 来寻找下一个字符串, N 来寻找上一个字符串

 

ifconfig :查看网络配置

网络配置目录:cd /etc/sysconfig/network-scripts


touch 文件名 : 创建文件
echo 字符串 >> 文件名 :给文件名输入字符串
echo "123456" >>file

 

vim编辑器 yum -y install vim 安装vim编辑器
i :切换到输入模式,输入字符
x:删除当前光标所在处的字符
: :切换到底线命令模式,在最底一行输入命令,如果是编辑模式,则需要先按ESC退出编辑模式
如 :wq 保存并退出


输入模式
使用以下按键:
ENTER:回车键,换行
BACK SPACE:退格键,删除光标前一个字符
DEL:删除键,删除光标后一个字符
方向键:在文本中移动光标位置
HOME/END :移动光标到行首/行尾
Page Up/Page Down:上/下翻页
Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
ESC:退出输入模式,切换到命令模式

数字+空格 在该行移动光标 比如1+空格,则将光标移动到1列那
数字+回合 移动光标到第几行 比如1+回车,则将光标移动到第一行

底线命令模式
按:(英文冒号)进入底线命令模式
常用基本命令:
:w 保存文件
:w! 若文件属性为只读时,强制写入文件,不过能不能写入还是看权限
:q 退出
:q! 强制退出,不保存文件直接退出
:wq 保存后退出,若为:wq!则为强制存储后退出
:set nu 显示行号,可以看到每行的前面会显示该行的行号
:set nonu 与set nu相反,取消显示行号


ZZ 若文件没有变更,则不保存然后离开,若修改过则保存后离开
:w [filename] 将编辑的数据储存到另一个文件中


搜索与替换
/字符串 进行字符串搜索
n 向下寻找
N 向上寻找

 

 

clear:清空命令

按tab键自动补齐命令


JDK安装
1、下载jdk rpm,去oracle官网下载
2、安装java环境
检测当前系统是否存在Java环境 java -version
如果有的话进行卸载
rpm -qa|grep jdk 检测jdk版本
rpm -e --nodeps jdk全名称 强制卸载

安装jdk
rpm -ivh rpm包

此处有坑,rpm安装后jdk不需要配置环境。
===============================
配置环境变量 :vim /etc/profile

jdk相关的文件路径 /usr/java/jdk相关的目录 ,比如jdk1.8.0_221-amd64
在最后一行配置
JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
CLASS_PATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
PATH=%JAVA_HOME%/bin
export PATH CLASSPATH JAVA_HOME

=======================================

springboot -> maven project ->clean ->package
在target目录下找到jar包,如项目名称.-0.0.1-SNAPSHOT.jar
执行jar包运行测试能否成功
java -jar 项目名称.-0.0.1-SNAPSHOT.jar


查看linux是否开启项目对应的端口,比如项目的端口是8080,linux也得开启对应的端口
firewall -cmd --list-ports 查看端口

firewall -cmd --zone=public --add-port=8080/tcp --permanent 开启8080端口

systemctl restart firewalld.service 重启防火墙
service firewalld restart
firewall-cmd --reload

 

docker安装 https://docs.docker.com/engine/install/centos/
1、检测centOS 7版本
cat /etc/redhat-release

2、安装准备环境
yml -y install 报名 #yum install 安装命令 -y所有提示都为y

yml -y install gcc
yml -y install gcc-c++

3、清除以前的版本

 

docker安装流程 (https://docs.docker.com/engine/install/centos/)
1、卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2、需要的安装包
yum install -y yum-utils

3、设置镜像仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认从国外下载,十分慢

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐使用阿里云的镜像

# 更新yum软件包索引
yum makecache fast

4、安装docker
yum install docker-ce docker-ce-cli containerd.io

5、启动docker
systemctl start docker
可能启动了也会出现问题,更改启动方法 命令-> service docker start

将docker服务设为开机启动:systemctl enable docker
6、使用docer version 查看docker版本,判断是否安装成功

7、hello-world
docker run hello-world

8、查看下载的hello-world镜像
docker images 查看下载的所有镜像

了解:卸载docker
1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
2、删除资源
rm -rf /var/lib/docker docker的默认工作路径
rm -rf /var/lib/containerd


常用命令
docker version 显示docker的版本信息
docker info 显示docker的系统信息,包括镜像和容器数量
docker --help 查看docker所有帮助命令

镜像命令

docker search 镜像名称
docker images 查看所有本地的主机上的镜像
docker pull 镜像名:tag :tag为镜像版本
docker rmi image-id 删除镜像id的镜像


#解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE_ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小

#可选项
-a , --all 列出所有镜像 如docker images -a
-q, --quiet 只显示镜像的id


docker search 搜索镜像

docker pull 镜像名 下载镜像
docker pull mysql 下载最新版本的mysql镜像
docker pull mysql:5.7 下载5.7版本的mysql镜像

删除镜像
docker rmi -f IMAGE ID(镜像id) 根据镜像id删除指定镜像

docker rmi -f $(docker images -aq) 删除全部镜像


容器命令

说明:有了镜像才可以创建容器,linux下载centos镜像来测试
docker pull centos

新建容器并启动
docker run [可选参数] image

#参数说明
--name="Name" 容器名字 tomcat1 tomcat2 来区分容器
-d 后台方式运行
-it 交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
容器端口
-P 随机指定端口


docker run -it centos /bin/bash 启动容器并交互

exit 退出容器


docker ps 命令
# 空 列出当前正在运行的容器
# -a 列出当前正在运行的容器+历史运行过的容器
# -n=1 显示最近创建的容器
# -q 只显示容器的编号


退出容器
exit 直接容器停止并退出
Ctrl + P +Q 退出容器但不停止容器


删除容器
docker rm 容器id 删除指定的容器,不能删除正在运行的容器,如果要强制删除使用rm -f
docker rm -f $(docker ps -aq) 删除所有容器
docker ps -a -q|xargs docker rm 删除所有人容器


启动和停止容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
dokcer stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器


常用其他命令

后台启动容器
docker run -d centos

问题docker ps 发现centos停止了

常见的坑:docker容器使用后台运行,就必须要一个前台进程,docker发现没有应用就是自动停止
容器启动后,发现自己没有提供服务,就会立刻停止,就没有程序了


查看日志
docker logs

进入当前正在运行的容器
我们通常容器是使用后台方式运行,需要进入容器,修改一些配置

#命令
方式一:docker exec -it 容器id bash/bash #进入容器后开启一个新的终端,可以在里面操作

方式二:docker attach 容器id #进入容器正在执行的终端,不会启动新的进程


从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径


docker attach 容器id 进入容器
cd /home 进入home目录
touch test.java 创建文件
exit 退出容器

从已经停止的容器里面拷贝文件出来
把容器中的/home目录下的test.java文件拷贝到主机的/home目录下
docker cp 容器id:/home/test.java /home


练习:
1、搜索镜像 search
2、下载镜像 pull
3、运行测试

docker images

# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
docker run -d --name nginx01 -p 3344:80 nginx

curl localhost:3344 测试是否成功启动

进入容器
docker exec -it nginx01 /bin/bash
whereis nginx
cd /etc/nginx
ls


DockerFile构建过程
基础知识:
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每一个指定都会创建提交一个新的镜像层,并对镜像进行提交

DockerFile:构建文件,定义了一切的步骤
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
Docker容器:容器就是镜像运行起来的提供服务器

FROM :(指定基础镜像,一切从这里开始)
MAINTAINER:镜像是谁写的,姓名+邮箱
RUN: 镜像构建的时候需要运行的命令(在命令前面加上RUN即可)
ADD:添加内容
WORKDIR:设计镜像的工作目录
VOLUME:设置卷,挂载主机目录
EXPOSE:指定暴露端口
RUN:指定容器启动后要干的事

CMD:指定容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT:指定容器启动的时候要运行的命令,可以追加命令
ONBUILD: 当构建镜像被继承,DockerFile这时候就会运行ONBUILD的指令,触发指令



这篇关于Linux及docker基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程