Docker安装、使用,容器化部署springboot项目

目录

一、使用官方安装脚本自动安装

二、Docker离线安装

[1. 下载安装包](#1. 下载安装包)

[2. 解压](#2. 解压)

3.创建docker.service文件

[4. 启动docker](#4. 启动docker)

三、docker常用命令

[1. docker常用命令](#1. docker常用命令)

[2. docker镜像命令](#2. docker镜像命令)

[3. docker镜像下载](#3. docker镜像下载)

4.docker镜像push到仓库

[5. docker操作容器](#5. docker操作容器)

[6.docker 运维命令](#6.docker 运维命令)

四、docker部署springboot项目

1.dockerfile指令详解

2.编写Dockerfile文件

3.制作docker镜像

4.运行镜像

5.docker打包流程

五、docker容器设置时区

1、在Dockerfile中设置镜像时区

2、创建容器时设置时区

3、进入容器进行设置

六、设置Docker容器日志大小

[1 设置一个容器服务的日志大小上限](#1 设置一个容器服务的日志大小上限)

[2 全局设置](#2 全局设置)

[3 docker日志存放位置](#3 docker日志存放位置)

七、docker网络模式

八、Linux自动清除缓存脚本,亲测有效

九、Linux系统中如何修改时间和时区

十、Docker-compose相关


一、使用官方安装脚本自动安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

二、Docker离线安装

1. 下载安装包

可以先下载到本地,然后通过ftp工具上传到服务器上,或者在服务器上使用命令下载

wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz

2. 解压

tar -zxvf docker-18.06.3-ce.tgz

将解压出来的docker文件复制到 /usr/bin/ 目录下

cp docker/* /usr/bin/

3.创建docker.service文件

进入 /etc/systemd/system/ 目录,并创建 docker.service 文件,内容如下,这样可以将docker注册为service服务

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
  
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
  
[Install]
WantedBy=multi-user.target

# 此处的--insecure-registry=127.0.0.1(此处改成你私服ip)设置是针对有搭建了自己私服Harbor时允许docker进行不安全的访问,否则访问将会被拒绝。

4. 启动docker

# 给docker.service文件添加执行权限
chmod +x /etc/systemd/system/docker.service
# 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
# 启动
systemctl start docker
# 设置开机启动
systemctl enable docker.service
# 查看docker服务状态
[root@localhost system]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-06-28 00:54:47 PDT; 10s ago
Docs: https://docs.docker.com
Main PID: 45475 (dockerd)
CGroup: /system.slice/docker.service
├─45475 /usr/bin/dockerd --selinux-enabled=false --insecure-registry=10.1.20.150
└─45487 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.158519178-07:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd..." module=grpc
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.158525449-07:00" level=info msg="ClientConn switching balancer to "pick_first"" module=grpc
Jun 28 00:54:46 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:46.202943588-07:00" level=info msg="Loading containers: start."
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.021854086-07:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon...d IP address"
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.126281901-07:00" level=info msg="Firewalld: interface docker0 already part of docker zone, returning"
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.244251569-07:00" level=info msg="Loading containers: done."
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.264592112-07:00" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=overlay2 version=20.10.17
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.265027319-07:00" level=info msg="Daemon has completed initialization"
Jun 28 00:54:47 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Jun 28 00:54:47 localhost.localdomain dockerd[45475]: time="2022-06-28T00:54:47.300116789-07:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
# 如上表示docker已安装成功

三、docker常用命令

1. docker常用命令

docker --help #查看docker命令

docker info #docker 详细信息,镜像和容器

docker version #查看docker版本

systemctl start docker #启动docker

systemctl stop docker #关闭docker

systemctl restart docker #重启docker

systemctl enable docker #docker设置随服务启动而自启动

systemctl status docker #查看docker 运行状态------如果是在运行中 输入命令后 会看到绿色的active

docker --help #docker 帮助命令

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

docker pull --help

pwd 显示工作路径

shutdown -h now 关闭系统 /halt 关闭系统

shutdown -r now 重启 / reboot 重启

systemctl stop firewalld  关闭防火墙

打包:

(1)将目录 /home/stud/wang 打包成 lvlv.tgz,同时使用 gzip 进行压缩。

tar --czvf lvlv.tgz /home/stud/wang

(2)将 lvlv.tgz 解包到指定目录,同时使用 gzip 进行解压缩。

tar -xzvf lvlv.tgz -C DIR

2. docker镜像命令

1)列出本地镜像:

docker images # 查看docker镜像;

具体列解释含义:

REPOSITORY #镜像仓库源

TAG #镜像的标签

IMAGE ID #镜像id

CREATED #创建时间

SIZE #大小

同一个仓库源可以有多个TAG,表示这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用tomcat,docker将默认使用tomcat:latest镜像

docker images -a #列出本地所有的镜像

docker images -q #只显示镜像ID

docker images --digests #显示镜像的摘要信息

docker images --no-trunc #显示完整的镜像信息

2)查找镜像:

docker search tomcat # 从Docker Hub上查找tomcat镜像

STARS: # 关注度

docker search --filter=stars=300 tomcat #从Docker Hub上查找关注度大于300的tomcat镜像

3. docker镜像下载

docker pull tomcat #从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:docker pull tomcat:latest

docker pull tomcat:8 # 选择指定版本下载

1)删除镜像命令:

A-#单个镜像删除,相当于:docker rmi java:latest

docker rmi java

B-#强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除)

docker rmi -f java

C-#多个镜像删除,不同镜像间以空格间隔

docker rmi -f java tomcat nginx

D-#删除本地全部镜像

docker rmi -f $(docker images -q)

E-#查看所有none镜像

docker images | grep none

F-#查看第一列为none的所有镜像

docker images | grep "^<none>" | awk "{print $3}"

G-#查询所有的none镜像的id

docker images | grep none | awk '{print $3}'

H-#删除所有的none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi

#更简单的方法

docker rmi `docker images -q -f dangling=true`

docker rmi $(docker images -q -f dangling=true)

2)保存镜像

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

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

eg:docker save tomcat -o /myimg.tar

3)加载镜像

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

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

4)镜像标签

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

4.docker镜像push到仓库

1)、登录docker hub创建自己的仓库地址:

https://hub.docker.com/repository/create

创建时,仓库名称要与镜像名称对应

2)、linux登录docker仓库

docker login -u 1185223710 # 1185223710 为仓库名称

登录docker仓库,输入密码

3)、将容器变为镜像

// 找到运行中的容器 (复制你要打包的容器的id)

docker ps

// 打包为镜像 (86d78d59b104:容器的id 、 my_centos:我们要打包成的镜像的名字)

docker commit 86d78d59b104 my_centos

// 找到打包的镜像

docker images

4)、将镜像打成标签

// my_centos:镜像的名字 、 1185223710:我们docker仓库的用户名 、 mysql:我们刚才新建的仓库名 、 v1:版本号,可以不设置

docker tag my_centos 1185223710/mysql:v1

5)、将标签上传镜像仓库

// 1185223710/mysql57:v1 对应上面的

docker push 1185223710/mysql57:v1

6)、下载自己的镜像

// 记得先登录

docker login

// 根据版本号拉取

docker pull 1185223710/mysql:v1

7)、登出docker仓库

docker logout

5. docker操作容器

1)查看容器

查看正在运行的容器

docker ps

查看所有容器 包括停止的容器

docker ps -a

-q参数,只显示container id

docker ps -q

查看容器详细信息

docker inspect demo1

2)容器启动与停止

#新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称

docker run -i -t --name mycentos 镜像名称/镜像ID

#后台启动容器,参数:-d 已守护方式启动容器

docker run -d mycentos

#启动止容器

docker start 容器id

重启容器

docker restart 容器id

关闭容器

docker kill 容器id

docker stop 容器id

-t 参数让Docker分配一个伪终端并绑定到容器的标准输入上

-i 参数则让容器的标准输入保持打开。

-c 参数用于给运行的容器分配cpu的shares值

-m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位

-v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume

-p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port

--name 容器名称

--net 容器使用的网络

-d 创建一个后台运行容器

3)容器进入与退出

#使用run方式在创建时进入

docker run -it centos /bin/bash

#关闭容器并退出

exit

#仅退出容器,不关闭

快捷键:Ctrl + P + Q

快捷键:Ctrl + Shift + P + Q

4)容器进程

#top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]

#列出redis容器中运行进程

docker top tomcat

#查看所有运行容器的进程信息

for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

5)容器日志

查看redis容器日志,默认参数

docker logs tomcat

#查看错误输出

docker logs container_name >/dev/null

#查看标准输出日志

docker logs container_name 2>/dev/null

查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;

docker logs -f -t --tail=20 redis

查看容器redis从2021年08月10日后的最新10条日志。

docker logs --since="2021-08-10" --tail=10 redis

6)进入当前正在运行的容器

通常容器使用后台的方式运行,需要进入容器,修改一些配置;

a:docker exec -it 容器id bashShell(/bin/bash)

b:docker attach 容器id bashShell(/bin/bash)

exec:进入容器后,开启一个新的终端,可以再里面操作;

attach:进入容器正在执行的终端,不会启动新的终端进程;

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

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

#从容器内 拷出

docker cp 容器ID/名称: 容器内路径 容器外路径

#从外部 拷贝文件到容器内

docker cp 容器外路径 容器ID/名称: 容器内路径

8)查看容器日志

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

9)容器开机自启动

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

ex:

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

不想删容器,又想让这个容器设置开机自启动方法如下:

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

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

10)更换容器名

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

6.docker 运维命令

1)查看docker工作目录

sudo docker info | grep "Docker Root Dir"

2)查看docker磁盘占用总体情况

du -hs /var/lib/docker/

3)查看Docker的磁盘使用具体情况

docker system df

4)删除 无用的容器和 镜像

删除异常停止的容器

docker rm `docker ps -a | grep Exited | awk '{print $1}'`

删除名称或标签为none的镜像

docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`

5)清除所有无容器使用的镜像

docker system prune -a

6)查找大文件

find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr

7)查找指定docker使用目录下大于指定大小文件

find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/*'

四、docker部署springboot项目

1.dockerfile指令详解

提供一个Dockerfile例子

# 基础镜像为centos
FROM centos:7

# 维护者
MAINTAINER ALEX

# 添加jdk压缩包至 /usr/local 目录,压缩包会自动解压,解压后目录名称为jdk1.8.0_271
ADD jdk-8u201-linux-x64.tar.gz /usr/local/env/jdk/

# 配置JAVA_HOME环境变量
ENV JAVA_HOME /usr/local/env/jdk/jdk1.8.0_201/

# 将JAVA_HOME/bin 添加至PATH环境变量
ENV PATH $JAVA_HOME/bin:$PATH

# 安装vim
RUN yum -y install vim

# 安装ll
RUN echo "alias ll='ls $LS_OPTIONS -l'" >> ~/.bashrc
RUN source ~/.bashrc

FROM jdk:1.8

MAINTAINER zkaw-mes-team

ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms128m -Xmx512m -XX:-UseGCOverheadLimit -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=utf-8"
ENV VERSION="1.0.1"

RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD  mes-modules-material-$VERSION.jar /home/docker/mes-modules-material-$VERSION.jar

CMD sleep 120;java $JAVA_OPTS -jar /home/docker/mes-modules-material-$VERSION.jar 

2.编写Dockerfile文件

Dockerfile文件位置要与jar文件所在目录相同

FROM jdk:1.8

ENV TZ=Asia/Shanghai

#将本地文件添加到容器中,并更名为myproject.jar

ADD lxj-test-0.0.1-SNAPSHOT.jar /home/docker/lxj-test-0.0.1-SNAPSHOT.jar

VOLUME /home/docker/logs

RUN ["chmod","+x","/home/docker/lxj-test-0.0.1-SNAPSHOT.jar"]

ENTRYPOINT ["java","-jar","-Xmx1024m","-Xms1024m","-Dfile.encoding=utf-8","/home/docker/lxj-test-0.0.1-SNAPSHOT.jar",">>","/home/docker/logs/test.log","2>&1","&"]

《在Linux上我们使用nohup命令来后台运行文件》
nohup java -jar /mes-system.jar >> /usr/local/app/logs/system.log 2>&1 &
1).nohup意思就是使用后台方式运行java命令。
2).>/dev/null意思是将标准信息输出到一个黑洞(/dev/null),说人话就是不输出标准信息。
3).java -jar /mes-system.jar >> /usr/local/app/logs/system.log 将日志的内容打印到/usr/local/app/logs/system.log中
4).2>&1 意思是将标准错误2重定向到标准输出&1,标准输出再定向到/usr/local/app/logs/system.log
5).& 符号是后台启动的意思

3.制作docker镜像

在dockerfile所在文件夹执行如下命令

docker build -t lxjtest .

注意后面的点(.)表示Dockerfile文件所在的位置,点代表在当前位置。

4.运行镜像

并设置 映射路径及端口

java 复制代码
docker run -d -it -p 8088:8088 -v /home/docker/lxj-test-0.0.1-SNAPSHOT.jar:/home/docker/lxj-test-0.0.1-SNAPSHOT.jar -v /home/docker/logs:/logs/ -v /etc/localtime:/etc/localtime --name lxj-test lxjtest

-v /home/docker/lxj-test-0.0.1-SNAPSHOT.jar:/home/docker/lxj-test-0.0.1-SNAPSHOT.jar挂载jar包,当jar包有更新时,将jar包放入主机的指定位置,重启docker容器就即可。

--net=host 设置容器和宿主机共享IP
--restart=always 表示开机自启动

如果docker run 的时候没有加 --restart=always ,然后已经运行的docker容器怎么设置自动重启? 执行下面命令:

docker update ---restart=always 容器名称

查询时间段内计划日志

docker logs -t -n 8 --since="2022-08-02T13:23:37" --until="2022-08-02T22:23:37" <容器名称>

5.docker打包流程

1)将容器变为镜像

docker commit 261314c94305 imagexxx

可用参数

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。

imagexxx 是新创建的镜像的名字

2)将镜像打包成tar包

docker save -o xxx.tar imagexxx # 当前路径下会生成一个xxx.tar

例如:

docker save -o electric_know_1.31_0.tar electric_know_1.31_0:latest

3)将tar包生成镜像

docker load < xxx.tar # 生成的镜像跟之前打包的镜像名称一样

4)将镜像生成容器

docker run -it --name 容器名称 镜像名称 /bin.bash

五、docker容器设置时区

1、在Dockerfile中设置镜像时区

设定时区

ENV TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

2、创建容器时设置时区

将宿主机与容器的时间进行挂载

-v /etc/localtime:/etc/localtime

3、进入容器进行设置

1)进入容器内:

docker exec -it 容器名 /bin/bash

2)设定时区

rm /etc/localtime

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

六、设置Docker容器日志大小

1 设置一个容器服务的日志大小上限

通过配置容器docker-compose.yml的max-size选项来实现:

nginx:

image: nginx:1.12.1

restart: always

logging:

driver: "json-file"

options:

max-size: "5g"

或者

docker run或dokcer create时添加参数

如创建并运行

docker run --log-opt max-size=10m --log-opt max-file=3

2 全局设置

新建/etc/docker/daemon.json,若有就不用新建了

{

"storage-driver": "devicemapper",

"registry-mirrors": ["http://f613ce8f.m.daocloud.io"],

"log-driver":"json-file",

"log-opts": {"max-size":"500m", "max-file":"3"}

}

max-size=500m,意味着一个容器日志大小上限是500M,

max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json

注:设置后只对新添加的容器有效。

除了 json-file 还支持很多 logging driver

none:容器没有日志可用,docker logs 什么都不返回 none 是 disable 容器日志功能

重启docker守护进程

systemctl daemon-reload

systemctl restart docker

3 docker日志存放位置

/var/lib/docker/containers

七、docker网络模式

常用命令:

# 创建网络
docker network create <Network Name>
# 查看已存在的网络
docker network list
#删除Docker网络 
docker network rm xxx

八、Linux自动清除缓存脚本,亲测有效

1、cleanCache.sh 清除缓存脚本

#!/bin/bash

#description: 清除缓存

echo "开始清除缓存"

sync;sync;sync #写入硬盘,防止数据丢失

#sleep 10 #延迟10秒

echo 3 > /proc/sys/vm/drop_caches

echo "结束清除缓存"

#需要单独执行下面定时命令(每天凌晨一点执行)

#echo '0 1 * * * sh /opt/script/cron/cleanCache.sh' >> /var/spool/cron/root

2、root账户下执行 命令

echo '0 1 * * * sh /opt/script/cron/cleanCache.sh' >> /var/spool/cron/root

3、查看定时任务是否有效命令

crontab -l

4、删除所有定时任务命令

crontab -r

查看内存占用情况

1、free -h 详解

total: 内存总数

used: 已经使用内存数

free: 完全空闲内存

shared: 多个进程共享的内存

buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)

cached: 用于文件内容的缓冲

available:真正剩余的可被程序应用的内存数

2、查询CPU占用前十名

ps auxw|head -1;ps -auxf|sort -nr -k3|head -10

3、查询内存占用前十名

ps auxw|head -1;ps -auxf|sort -nr -k4|head -10

df -h 查询内存 查看磁盘空间大小

查看docker占用的情况

docker system df

du -sh * 查找到大小异常的文件

九、Linux系统中如何修改时间和时区

1.只设置时间

(1)先查看日期、时间和时区,通过date命令

date

(2)如果日期和时区都正确,则只更改时间,通过 date -s 时间

date -s 10:10

2.设置日期

如果需要设置日期,需要使用date -s设置

date -s yyyy-MM-dd

3.设置时区

设置时区可能稍微复杂点,它分为两步

(1)首先需要知道需要使用哪种时区,

例如,我国使用的北京时间,对应的时区为东八区,可以记为CST、GMT+8、Asia/Shanghai

(2)将系统中存储的时区信息,覆盖到本地时区配置

只需要将/usr/share/zoneinfo/下面的时区配置信息,覆盖到/etc/localtime本地时区配置即可,具体操作

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

十、Docker-compose相关

Docker-compose安装、使用,容器化部署springboot项目-CSDN博客

相关推荐
追风林5 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘1 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩1 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花1 小时前
第六章:DNS域名解析服务器
运维·服务器
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发2 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信