配置管理docker对象和守护进程

使用 Docker 的主要工作是创建和使用各类对象:镜像、容器、网络、卷等。

1、Docker对象的标记

标记(Label):是一种将元数据应用于Docker对象(镜像、容器、网络、卷、Swarm节点等)的机制。

标记的形式是键值对,以字符串的形式存储。

  • 标记的键:是键值对左边的元素。可以由 . - 字母 数字组成的字符串。
  • 标记的值:是可以包含能表示为字符串的任何数据类型,包括但不限于JSON、XML、CSV或YAML。
  • Docker并未反序列化该标记值
  • 同一个对象中的键值对是唯一的,一个键指定多个值,后面的值会覆盖前面的值。

2、格式化命令和日志输出

Docker使用Go模板管理某些命令和日志驱动的输出格式。
使用 docker inspect命令时可通过 --format选项控制输出格式。

语法
[root@localhost ~]# docker inspect --help
Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Return low-level information on Docker objects
Options:
  -f, --format string   Format the output using the given Go
                        template
  -s, --size            Display total file sizes if the type
                        is container
      --type string     Return JSON for specified type

创建容器
[root@localhost ~]# docker run -tid --name TEst ubuntu
55271e4fe05787346ec47dee48b2566e3f73db9fd5f31198d965ce8e59ce8296
案例1:使用join函数将一组字符串进行连接以创建单个字符串
[root@localhost ~]# docker inspect --format='{{.HostConfig.MaskedPaths}}' TEst
[/proc/asound /proc/acpi /proc/kcore /proc/keys /proc/latency_stats /proc/timer_list /proc/timer_stats /proc/sched_debug /proc/scsi /sys/firmware]
改用join连接创建单字符串,只适用数组[]
[root@localhost ~]# docker inspect --format='{{join .HostConfig.MaskedPaths ","}}' TEst
/proc/asound,/proc/acpi,/proc/kcore,/proc/keys,/proc/latency_stats,/proc/timer_list,/proc/timer_stats,/proc/sched_debug,/proc/scsi,/sys/firmware

案例2:使用json函数将元素编码为JSON字符串
[root@localhost ~]# docker inspect --format='{{json .HostConfig.MaskedPaths}}' TEst
["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"]

案例3:使用lower函数将字符串转为小写
只适合字符串
[root@localhost ~]# docker inspect --format='{{.Name}}' TEst
/TEst
[root@localhost ~]# docker inspect --format='{{lower .Name}}' TEst
/test

案例4:使用split函数将字符串切分为由分隔符分隔的字符串列表
[root@localhost ~]# docker inspect --format='{{.NetworkSettings.MacAddress}}' TEst
02:42:ac:11:00:03
split函数将字符串切分
[root@localhost ~]# docker inspect --format='{{split (.NetworkSettings.MacAddress) ":"}}' TEst
[02 42 ac 11 00 03]

案例5:使用title函数将字符串的首字母转为大写
[root@localhost ~]# docker inspect --format='{{.NetworkSettings.SandboxID}}' TEst
da0151daf41b5a7255a6a467b838cb8421891dccd4d3881896ddf3b0bae25ef8
[root@localhost ~]# docker inspect --format='{{title .NetworkSettings.SandboxID}}' TEst
Da0151daf41b5a7255a6a467b838cb8421891dccd4d3881896ddf3b0bae25ef8

案例6:使用upper函数将字符串转为大写
[root@localhost ~]# docker inspect --format='{{.Name}}' TEst
/TEst
[root@localhost ~]# docker inspect --format='{{upper .Name}}' TEst
/TEST

案例7:使用println函数使输出时每个值占一行
[root@localhost ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' TEst
172.17.0.3

案例8:显示所有容器全部内容
[root@localhost ~]# docker container ls --format='{{json .}}'
{"Command":"\"bash\"","CreatedAt":"2022-05-29 22:50:54 +0800 CST","ID":"55271e4fe057","Image":"ubuntu","Labels":"","LocalVolumes":"0","Mounts":"","Names":"TEst","Networks":"bridge","Ports":"","RunningFor":"25 minutes ago","Size":"0B (virtual 72.8MB)","State":"running","Status":"Up 25 minutes"}
{"Command":"\"bash\"","CreatedAt":"2022-05-29 22:40:14 +0800 CST","ID":"10fe2ab9a68a","Image":"ubuntu","Labels":"","LocalVolumes":"0","Mounts":"","Names":"test","Networks":"bridge","Ports":"","RunningFor":"36 minutes ago","Size":"0B (virtual 72.8MB)","State":"running","Status":"Up 36 minutes"}

3、删除不用的Docker对象

Docker采用保守方法清除未使用的对象,也称为”垃圾回收”,实际不会被删除,会导致占用的资源越来越多。

每个对象类型都提供了 prune 命令帮助清理对象。

提供了 docker system prune 清除多种类型的对象。

语法
[root@localhost ~]# docker system prune --help
Usage:  docker system prune [OPTIONS]
Remove unused data
Options:
  -a, --all             Remove all unused images not just    # 所有未使用的镜像删除
                        dangling ones
      --filter filter   Provide filter values (e.g.          # 提供过滤值
                        'label==')
  -f, --force           Do not prompt for confirmation       # 不再显示提示信息
      --volumes         Prune volumes                        # 17.06.1版本后默认不删除卷,需要加这个选项才删除

案例
[root@localhost ~]# docker system prune --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all volumes not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y

Docker 守护进程是Docker中的后台应用程序,进程名称为 docker

1、Docker守护进程的启动

大多数的Linux发行版,使用 systemd管理开机启动服务。

启动docker
[root@localhost ~]# systemctl start docker

重启docker
[root@localhost ~]# systemctl restart docker

停止docker
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

除了使用系统工具管理Docker守护进程,还可以使用 docker 命令手动启动守护进程.

1.关闭docker
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

2.测试docker命令报错
[root@localhost ~]# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

[root@localhost ~]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

3.dockerd手动启动守护进程————会在前台运行并日志输出到终端
[root@localhost ~]# dockerd
INFO[2022-05-29T23:33:31.379467774+08:00] Starting up
INFO[2022-05-29T23:33:31.380887743+08:00] parsed scheme: "unix"

4.查看docker服务状态
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Sun 2022-05-29 23:33:26 CST; 3min 9s ago

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
nginx                 latest    fa5269854a5e   5 weeks ago    142MB
busybox               latest    1a80408de790   6 weeks ago    1.24M

2、Docker守护进程的配置方式

启动Docker,docker 守护进程会使用默认配置运行。

进一步配置守护进程两种方式:

linux系统配置文件在 /etc/docker/daemon.json。

{
  "debug": true,
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem",
  "hosts": ["tcp://192.168.199.53:2376"]
}

该方式更适合排查问题。

dockerd --debug \
  --tls=true \
  --tlscert=/var/docker/server.pem \
  --tlskey=/var/docker/serverkey.pem \
  --host tcp://192.168.199.53:2376

不能用这两种方式同时定义同一选项。

3、解决daemon.json文件和启动脚本之间的冲突 《————没理解

如果daemon.json配置文件定义有选项,在运行docker命令或启动脚本时又使用相同的选项,则这些选项会产生冲突。需要调整相关选项或daemon.json文件来解决冲突。

如果启动守护进程时使用 -H 主机选项,另外还在 daemon.json 文件中设置了 hosts 选项,会导致配置冲突,docker无法启动。
解决方法:创建一个新配置文件 /etc/systemd/system/docker.service.d/docker.conf ,加入以下配置屏蔽启动守护进程所使用的 -H

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

屏蔽了 -H 选项后,又没有在daemon.json中指定hosts选项,docker也无法启动。

启动docker前,应当重新加载systemd配置文件

systemctl daemon-reload

4、Docker守护进程目录

Docker守护进程将所有数据保存在一个目录中,用来跟踪与Docker有关的一切对象,包括容器、镜像、卷、服务定义和机密数据。

默认情况下,在Linux系统上该目录是/var/lib/docker,在Windows系统上是C:\ProgramData\docker。

可以使用 data-root配置选项将Docker守护进程配置为使用不同的目录。

Docker守护进程的状态保存在该目录中,确保为每个守护进程使用专用的目录。

1、检查Docker是否在运行

检查Docker是否在运行,与操作系统无关的一种方式是直接使用docker info命令。

经测试docker是否启动,docker info 的显示内容不变
[root@localhost ~]# docker info > docker_info_1
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker info > docker_info_2
[root@localhost ~]# diff docker_info_1 docker_info_2    《————没有输出即没有变化

使用操作系统提供的工具,如systemctl is-active docker、systemctl status docker 或service docker status。

查看到 docker 正在运行
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-05-31 22:12:35 CST; 1min 2s ago                   《《——————这里显示active和running
     Docs: https://docs.docker.com

[root@localhost ~]# systemctl is-active docker
active                                        《————active忙碌的,活跃的; 积极的

查看到 docker 关闭
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2022-05-31 22:17:49 CST; 10s ago                        《《——————这里显示inactive和dead
     Docs: https://docs.docker.com
  Process: 1626 ExecStart=/usr/bin/docker -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)

[root@localhost ~]# systemctl is-active docker
inactive                                       《————inactive不活跃的; 无效的; 无行动的; 不活动的

使用ps或top之类的Linux命令在进程列表中检查docker进程。

ps查看docker进程
[root@localhost ~]# ps aux | grep docker
root       1847  0.0  2.8 1142704 57596 ?       Ssl  22:19   0:00 /usr/bin/docker -H fd:// --containerd=/run/containerd/containerd.sock

top查看docker进程
[root@localhost ~]# top
Tasks:  98 total,   1 running,  97 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2030148 total,   836728 free,   585552 used,   607868 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1237688 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  1847 root      20   0 1151156  63716  26984 S  0.7  3.1   0:00.15 docker       《————在这里
  1977 root      20   0  161956   2212   1552 R  0.3  0.1   0:00.07 top

2、从Docker守护进程获取实时事件

使用 docker events 命令查看Docker服务端的各种事件信息。

语法
[root@localhost ~]# docker events --help
Usage:  docker events [OPTIONS]
Get real time events from the server
Options:
  -f, --filter filter   Filter output based on conditions provided          # 根据条件过滤事件
      --format string   Format the output using the given Go template       # 使用Go模板格式化输出
      --since string    Show all events created since timestamp             # 显示某个时间戳之后的所有事件
      --until string    Stream events until this timestamp                  # 显示某个时间戳之前的所有事件

案例
1.在终端中执行命令监听事件
[root@localhost ~]# docker events

2.开启新的终端,执行命令触发事件
[root@localhost ~]# docker create --name test ubuntu top
5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295
[root@localhost ~]# docker start test
test
[root@localhost ~]# docker stop test
test

3.切换回之前的终端查看事件信息
2022-05-31T22:35:17.244496893+08:00 container create 5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295 (image=ubuntu, name=test)
2022-05-31T22:35:34.599432775+08:00 network connect 7470fe53ce4332cee7835a3a75b77b63615c4386fabad54270187e2e9c81742e (container=5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295, name=bridge, type=bridge)
2022-05-31T22:35:35.229381468+08:00 container start 5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295 (image=ubuntu, name=test)
2022-05-31T22:35:35.338438552+08:00 container die 5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295 (exitCode=1, image=ubuntu, name=test)
2022-05-31T22:35:35.361616563+08:00 network disconnect 7470fe53ce4332cee7835a3a75b77b63615c4386fabad54270187e2e9c81742e (container=5efd364b81da023743203031427d2e6090b3feee5f37b5c2c84025c426830295, name=bridge, type=bridge)

3、查看Docker守护进程日志

常用操作系统中Docker守护进程日志的位置

RHEL、Oracle Linux:/var/log/messages。
Debian:/var/log/daemon.log。
Ubuntu 14.10:/var/log/upstart/docker.log。
macOS(Docker 18.01及以上版本):~/Library/Containers/com.docker.docker/Data/vms/ 0/console-ring。
macOS(Docker

使用systemctl的linux系统查看Docker守护进程日志:

[root@localhost ~]# journalctl -u docker.service
-- Logs begin at Tue 2022-05-31 22:09:05 CST, end at Tue 2022-05-31 22:35:35 CST. --
May 31 22:09:18 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...

May 31 22:09:22 localhost.localdomain docker[994]: time="2022-05-31T22:09:22.775557080+08:00" level=info m
May 31 22:09:22 localhost.localdomain systemd[1]: Started Docker Application Container Engine.

May 31 22:09:22 localhost.localdomain docker[994]: time="2022-05-31T22:09:22.862325686+08:00" level=info m
May 31 22:11:30 localhost.localdomain systemd[1]: Stopping Docker Application Container Engine...

May 31 22:11:30 localhost.localdomain docker[994]: time="2022-05-31T22:11:30.414217870+08:00" level=info m
May 31 22:11:30 localhost.localdomain docker[994]: time="2022-05-31T22:11:30.414945379+08:00" level=info m

SIGUSR1信号发送给守护进程,可以强制将堆栈跟踪记录日志,常用于 docker 守护进程无响应的情况。

这个做法会强制记录堆栈跟踪,但不会停止守护进程。

堆栈跟踪可用于确定守护进程内所有 Goroutine(GO中的协程)和线程的状态。

1.查看守护进程日志
[root@localhost ~]# tailf /var/log/messages

2.新终端中,发送SIGUSR1信号
[root@localhost ~]# kill -SIGUSR1 $(pidof docker)

3.回之前的终端查看日志
May 31 23:02:46 localhost docker: time="2022-05-31T23:02:46.269157263+08:00" level=info msg="goroutine stacks written to /var/run/docker/goroutine-stacks-2022-05-31T230246+0800.log"

4、开启Docker 守护进程的调试模式

daemon.json文件中将debug键值设置为true。

[root@localhost ~]# vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://nxwgbmaq.mirror.aliyuncs.com"],
  "debug":true
}

方式一:发送HUP信号到守护进程,使其重新加载配置

[root@localhost ~]# kill -SIGHUP $(pidof docker)

查看docker 守护进程日志有如下信息
May 31 23:10:57 localhost docker: time="2022-05-31T23:10:57.476347186+08:00" level=info msg="Got signal to reload configuration, reloading from: /etc/docker/daemon.json"
May 31 23:10:57 localhost docker: time="2022-05-31T23:10:57.476971286+08:00" level=info msg="Reloaded configuration: {\"mtu\":1500,\"pidfile\":\"/var/run/docker.pid\",\"data-root\":\"/var/lib/docker\",\"exec-root\":\"/var/run/docker\",\"group\":\"docker\",\"deprecated-key-path\":\"/etc/docker/key.json\",\"max-concurrent-downloads\":3,\"max-concurrent-uploads\":5,\"max-download-attempts\":5,\"shutdown-timeout\":15,\"debug\":true,\"hosts\":[\"fd://\"],\"log-level\":\"info\",\"swarm-default-advertise-addr\":\"\",\"swarm-raft-heartbeat-tick\":0,\"swarm-raft-election-tick\":0,\"metrics-addr\":\"\",\"host-gateway-ip\":\"172.17.0.1\",\"log-driver\":\"json-file\",\"ip\":\"0.0.0.0\",\"icc\":true,\"iptables\":true,\"ip-forward\":true,\"ip-masq\":true,\"userland-proxy\":true,\"default-address-pools\":{\"Values\":null},\"network-control-plane-mtu\":1500,\"registry-mirrors\":[\"https://nxwgbmaq.mirror.aliyuncs.com\"],\"experimental\":false,\"containerd\":\"/run/containerd/containerd.sock\",\"builder\":{\"GC\":{},\"Entitlements\":{}},\"containerd-namespace\":\"moby\",\"containerd-plugin-namespace\":\"plugins.moby\",\"runtimes\":{\"io.containerd.runc.v2\":{\"path\":\"runc\"},\"io.containerd.runtime.v1.linux\":{\"path\":\"runc\"},\"runc\":{\"path\":\"runc\"}},\"default-runtime\":\"runc\",\"default-shm-size\":67108864,\"default-ipc-mode\":\"private\",\"default-cgroupns-mode\":\"host\",\"resolv-conf\":\"/etc/resolv.conf\"}"
May 31 23:11:20 localhost docker: time="2022-05-31T23:11:20.249163988+08:00" level=debug msg="Calling HEAD /_ping"
May 31 23:11:20 localhost docker: time="2022-05-31T23:11:20.250085062+08:00" level=debug msg="Calling GET /v1.41/info"

方式二:直接停止Docker守护进程,并使用 -D 调试选项手动重新启动

[root@localhost ~]# systemctl stop docker

[root@localhost ~]# docker -D
[root@localhost ~]# docker -D
INFO[2022-06-01T01:23:55.464012219+08:00] Starting up
DEBU[2022-06-01T01:23:55.464797921+08:00] Listener created for HTTP on unix (/var/run/docker.sock)
DEBU[2022-06-01T01:23:55.465302150+08:00] Golang's threads limit set to 14040
INFO[2022-06-01T01:23:55.465551259+08:00] parsed scheme: "unix"                         module=grpc
INFO[2022-06-01T01:23:55.465563522+08:00] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2022-06-01T01:23:55.465590699+08:00] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock   0 }]  }  module=grpc

第二种方式可能会导致 Docker 在不同于主机启动脚本创建的环境中重新启动,使调试更加困难。

5、自定义Docker 守护进程选项

daemon.json文件可以用来配置几乎所有的守护进程配置选项。

案例:运行时目录和存储驱动的配置

[root@localhost ~]# vi /etc/docker/daemon.json
{
  "registry-mirrors":["https://nxwgbmaq.mirror.aliyuncs.com"],
  "data-root":"/mnt/docker-data",
  "storage-driver":"overlay"
}

上述配置中, data-root选项设置的是运行目录(docker 镜像、容器、卷所用的磁盘空间)。 storage-driver选项设置的是存储驱动。

6、为Docker 守护进程配置 HTTP/HTTPS代理

无法使用 daemon.json 配置 HTTP/HTTPS代理。

Docker 守护进程在它的启动环境使用 HTTP_PROXY、HTTPS_PROXY、NO_PROXY环境变量来配置 HTTP/HTTPS 代理的行为。

这些环境变量只能使用 Docker 的 systemd 服务文件来配置。

1.为docker服务创建一个可以存放systemd文件的目录。
[root@localhost ~]# mkdir -p /etc/systemd/system/docker.service.d

2.环境变量配置
1)如果Docker守护进程位于HTTP代理服务器后面
创建名为/etc/systemd/system/docker.service.d/http-proxy.conf的文件,并添加HTTP_ PROXY环境变量定义。
[root@localhost ~]# vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"     《————实际使用注意修改地址

2)如果Docker守护进程位于HTTPS代理服务器后面
需要创建名为 /etc/systemd/system/docker.service.d/https-proxy.conf 的文件,并加入HTTPS_PROXY环境变量定义。
[root@localhost ~]# vi /etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"   《————实际使用注意修改地址

3)如果不需要使用代理方式的连接,内部部署有Docker注册服务器
可以通过NO_PROXY环境变量明确指定。
[root@localhost ~]# vi /etc/systemd/system/docker.service.d/no-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com

3.重新加载systemd的配置文件。
[root@localhost ~]# systemctl daemon-reload

4.重新启动Docker。
[root@localhost ~]# systemctl restart docker

5.验证配置是否已经加载。
[root@localhost ~]# systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/

Original: https://www.cnblogs.com/kongshuo/p/16339078.html
Author: kongshuo
Title: 配置管理docker对象和守护进程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585520/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一篇文章学会shell脚本

    一、Shell传递参数 运行: 二、Shell数组 运行: 三、Shell运算符 1、算术运算符 注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的…

    Linux 2023年5月28日
    099
  • ​探秘 Web 水印技术

    Web 水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印),本文将分别予以介绍,带你探秘…

    Linux 2023年6月8日
    0119
  • .NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?

    什么是.NET?什么是.NET Framework? 本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NE…

    Linux 2023年6月13日
    089
  • Linux服务器文件打包

    1,一般打包:: 文件路径是相对路径,打包后文件也是相对路径,无论是否添加P参数. 文件目录是绝对路径,但不加P参数打包可能会报错[删除/之类的错误],.加P参数打包正确无错误.打…

    Linux 2023年5月27日
    0116
  • Linux命令篇-wc 命令

    wc – print newline, word, and byte counts for each file wc: 统计文件的 字&#…

    Linux 2023年6月13日
    097
  • [转]EVE-NG 中使用 SecureCRT 合并tab标签

    在EVE-NG中双击设备使用SecureCRT对设备进行调试连接时,会出现每次连接不同设备时都会打开一个新的SecureCRT窗口,而不是在一个窗口中添加一个新的标签页,这就会导致…

    Linux 2023年6月8日
    0100
  • CentOS安装Docker-ce并配置国内镜像

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0106
  • CSS解决父级边框坍塌的问题

    首先在父级标签内添加如下 标签 然后在CSS中对该标签进行如下修饰: #clear{ clear:both; margin:0px; padding: 0px; } 优点:简单。缺…

    Linux 2023年6月13日
    0102
  • 【设计模式】Java设计模式-模板模式

    Java设计模式 – 模板模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一个有梦有戏的人…

    Linux 2023年6月6日
    0152
  • 大数据之Hadoop集群中Yarn常用命令

    Yarn状态的查询,除了可以在hadoop103:8088页面查看以外,还可以通过命令操作。常见的命令操作如下所示。 启动集群 [hadoop@hadoop102 bin]$ my…

    Linux 2023年6月8日
    0141
  • 解决USB在虚拟机不显示问题

    电脑重装了下系统,顺带重新装了vmware,发现虚拟机无法识别USB设备,居然连右下角图标和可识别设备都不显示了。 网上找了很多方法,大多是纷繁复杂,且行不行都无法保证。 我发现一…

    Linux 2023年5月27日
    0125
  • Android:hook很“危险”,使用需谨慎。

    前言 上篇文章《Android安卓进阶技术分享之AGP工作原理》和大家分析了 AGP(Android Gradle Plugin) 做了哪些事,了解到 AGP 就是为打包这个过程服…

    Linux 2023年6月13日
    079
  • 存入redis中的java对象都需要序列化

    存入redis中的java对象都需要实现Serializable接口 Original: https://www.cnblogs.com/toSeeMyDream/p/127795…

    Linux 2023年5月28日
    0117
  • PYTORCH: 60分钟 | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练。在本节,你将会对autograd如何帮助神经网络训练的概念有所理解。 背景 神经网络(NNs)是…

    Linux 2023年6月16日
    0174
  • MAC Book: Operation not permitted

    背景: 最近清理系统上的一些无用的文件后,为了release出可用空间,所以还要把.Trash目录下的文件清理才真正清理完,但是ls 查看该目录时发现一直报”opera…

    Linux 2023年6月7日
    093
  • 文件权限问题导致plink报错 Failed to open 21JAN.log. Try changing the –out parameter.

    晚上兴起,想起一直以来没有解决的问题,于是复制一个目录,开始跑数据,但是跑到第一步就采坑 plink –chr-set 95 –file merge &#8…

    Linux 2023年6月14日
    0161
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球