热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

docker创建/启动容器方式

Docker给我们提供创建容器的方式也有好几种,包括1.dockerrun命令、2.Dockerfile文件、3.docker-compose4.使用runC创建容器本机情况环境采

Docker给我们提供创建容器的方式也有好几种,包括
1.docker run命令、
2.Dockerfile文件、
3.docker-compose
4.使用runC创建容器

本机情况环境采集:

[root@ht5 ~]# docker version
Client:
Version:
18.03.0-ce
API version:
1.37
Go version: go1.
9.4
Git commit: 0520e24
Built: Wed Mar
21 23:09:15 2018
OS
/Arch: linux/amd64 //安装平台,默认时出错.应该是x86
Experimental:
false
Orchestrator: swarm //docker集群工具
Server:
Engine:
Version:
18.03.0-ce
API version:
1.37 (minimum version 1.12)
Go version: go1.
9.4
Git commit: 0520e24
Built: Wed Mar
21 23:13:03 2018
OS
/Arch: linux/amd64
Experimental:
false
[root@ht5
~]# docker info
Containers:
27
Running:
16
Paused:
0
Stopped:
11
Images:
69
Server Version:
18.03.0-ce
Storage Driver: overlay2
Backing Filesystem: xfs //这里是可以变更的
Supports d_type:
false //ftype设置
Native Overlay Diff:
true
Logging Driver: json
-file
Cgroup Driver: cgroupfs //隔离资源结合namespace使用
Plugins:
Volume: local
Network: bridge host macvlan
null overlay
Log: awslogs fluentd gcplogs gelf journald json
-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker
-init
containerd version: cfd04396dc68220d1cecbe686a6cc3aa5ce3667c
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
seccomp
Profile:
default
Kernel Version:
3.10.0-1160.42.2.el7.x86_64
Operating System: CentOS Linux
7 (Core)
OSType: linux
Architecture: x86_64
CPUs:
8
Total Memory:
15.65GiB
Name: ht5.node
ID: BGK3:6SSW:KQ56:JJTE:FUYP:RQKJ:37C5:AIXY:UEQM:FJIV:ZUFY:
5527
Docker Root Dir:
/var/lib/docker
Debug Mode (client):
false
Debug Mode (server):
false
Registry: https:
//index.docker.io/v1/
Labels:
Experimental:
false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled:
false
WARNING: overlay2: the backing xfs filesystem
is formatted without d_type support, which leads to incorrect behavior.
Reformat the filesystem with ftype
=1 to enable d_type support.
Running without d_type support will not be supported
in future releases.
本机有几个问题:
1.ftype没有设置
2.amd64架构选择错误

本机的docker-ce(开源版本)安装之后的docker工具

docker
docker
-containerd
docker
-containerd-ctr
docker
-containerd-shim
dockerd
docker
-init
docker
-proxy
docker
-runc
container
-storage-setup

方式一:docker run命令方式

$docker run --name mycreate-nginx -p 1080:80 -v /usr/local/src/nginxcon:/usr/share/nginx/html -d nginx

参数说明:
--name:定义容器名。
-p:宿主机与容器的端口挂载,格式:宿主机端口:容器内部端口
-v:宿主机目录与容器内目录映射,格式:宿主机目录:容器内部目录
-d:后台执行
这里把容器名取名为mycreate-nginx,把容器的80端口映射到宿主机的1080端口,
容器内的/usr/share/nginx/html目录映射到宿主机的/user/local/src/nginxcon目录,
使用的是nginx最新的镜像,镜像部分也可以写成 “nginx:版本”比如“nginx:1.15.1”。
我们来实际运行下,从下面可以清晰的看到,如果本地仓库即docker images列出的本地镜像没有,则从远程拉取

[root@ht5 src]# docker run --name mycreate-nginx -p 1080:80 -v /usr/local/src/nginxcon:/usr/share/nginx/html -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
1fe172e4850f: Pull complete
35c195f487df: Pull complete
213b9b16f495: Pull complete
a8172d9e19b9: Pull complete
f5eee2cb2150: Pull complete
93e404ba8667: Pull complete
Digest: sha256:859ab6768a6f26a79bc42b231664111317d095a4f04e4b6fe79ce37b3d199097
Status: Downloaded newer image for nginx:latest
222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76

[root@ht5 src]# netstat -anlp | grep 1080
tcp6 0 0 :::1080 :::* LISTEN 79275/docker-proxy

[root@ht5 src]# ps -ef | grep docker

root      79275   1384  0 23:13 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 1080 -container-ip 172.17.0.3 -container-port 80

//上面即创建一个容器,同时对外暴露端口,通过docker-proxy代理,提供1080访问,宿主机上执行 curl http://localhost:1080/ 访问容器内的80端口

增加参数可以改变容器分配的cpu和内存,io等资源的设置

-cpu-shares 数字 //如果想为cpu制定不同的权重
--cpuset-cpus 设置容器使用的cpu内核
--cpu-period是用来指定容器对于cpu的使用要在多长时间内重新分配一次(1000000(1秒))
--cpu-quota是用来指定在这个周期内,最多可以有多少时间跑这个容器(2000000.2秒))
--cpu-shares(权重)不同的是,这种配置指定一个绝对值,容器对cpu资源使用绝对不会超过配置的值。
当然,在多核情况下,如果允许容器进程完全占用两个cpu,则可以将cpu
-period设置为100000(0.1秒),cpu-quota设置为200000(0.2秒)
-cpuset-cpus 0-7#执行以下命令需要宿主机为8核,表示创建的容器只能使用0-7 8个内核,最终生成cgroup的cpu内核配置如下: //如果不设置,默认就是0-7
[root@ht5
~]# cat /sys/fs/cgroup/cpuset/cpuset.cpus
0-7
-m或–memory设置内存的使用限额 例如:-m 100M --memory-swap=200M
--vm 1 ,代表启动一个内存工作线程
--vm-bytes 100M ,代表每个线程可以分配100M内存
–blkio-weight参数可以改变容器block IO的优先级。例如:--blkio-weight 300

docker cgroup 开启启动的查看(比较两台机器的开启启动情况)

[root@ht5 ~]# cat /var/log/dmesg | grep cg
[
0.000000] Initializing cgroup subsys cpuset
[
0.000000] Initializing cgroup subsys cpu
[
0.000000] Initializing cgroup subsys cpuacct
[
0.000000] allocated 134217728 bytes of page_cgroup
[
0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups //有时候可能这里会出现内存泄漏的情况
[ 0.193565] Initializing cgroup subsys memory
[
0.193579] Initializing cgroup subsys devices
[
0.193580] Initializing cgroup subsys freezer
[
0.193581] Initializing cgroup subsys net_cls
[
0.193583] Initializing cgroup subsys blkio //Cgroup中的blkio子系统的主要功能是实现对磁盘i/o带宽的定制化控制
[
0.193584] Initializing cgroup subsys perf_event
[
0.193594] Initializing cgroup subsys hugetlb
[
0.193598] Initializing cgroup subsys pids
[
0.193605] Initializing cgroup subsys net_prio
//这里采集一台没有安装docker的机器,所以cgroup是系统的特性.
[root@fp-mysql-13 fs]# cat /var/log/dmesg | grep cg
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu

  [ 0.000000] Initializing cgroup subsys cpuacct
  [ 0.000000] allocated 536870912 bytes of page_cgroup
  [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
  [ 0.037518] Initializing cgroup subsys memory
  [ 0.037539] Initializing cgroup subsys devices
  [ 0.037540] Initializing cgroup subsys freezer
  [ 0.037541] Initializing cgroup subsys net_cls
  [ 0.037543] Initializing cgroup subsys blkio
  [ 0.037544] Initializing cgroup subsys perf_event
  [ 0.037548] Initializing cgroup subsys hugetlb

docker cgroup目录下的变化(安装docker使用cgroups和没有使用cgroups机器的比较)

//cgroups工作目录 /sys/fs/cgroup
[root@ht5 ~]# cd /sys/fs/cgroup/
[root@ht5 cgroup]# ll
total
0
drwxr
-xr-x 7 root root 0 Feb 18 17:26 blkio
lrwxrwxrwx
1 root root 11 Feb 18 17:26 cpu -> cpu,cpuacct
lrwxrwxrwx
1 root root 11 Feb 18 17:26 cpuacct -> cpu,cpuacct
drwxr
-xr-x 7 root root 0 Feb 18 17:26 cpu,cpuacct
drwxr
-xr-x 5 root root 0 Feb 18 17:26 cpuset
drwxr
-xr-x 7 root root 0 Feb 18 17:26 devices
drwxr
-xr-x 5 root root 0 Feb 18 17:26 freezer
drwxr
-xr-x 5 root root 0 Feb 18 17:26 hugetlb
drwxr
-xr-x 7 root root 0 Feb 18 17:26 memory
lrwxrwxrwx
1 root root 16 Feb 18 17:26 net_cls -> net_cls,net_prio
drwxr
-xr-x 5 root root 0 Feb 18 17:26 net_cls,net_prio
lrwxrwxrwx
1 root root 16 Feb 18 17:26 net_prio -> net_cls,net_prio
drwxr
-xr-x 5 root root 0 Feb 18 17:26 perf_event
drwxr
-xr-x 7 root root 0 Feb 18 17:26 pids //这里
drwxr-xr-x 7 root root 0 Feb 18 17:26 systemd
//和下面最大的不同就是pids目录的出现memory目录下的变化
[root@fp
-mysql-13 fs]# cd /sys/fs/cgroup/
[root@fp
-mysql-13 cgroup]# ll
total
0
drwxr
-xr-x 2 root root 0 Nov 23 15:45 blkio
lrwxrwxrwx
1 root root 11 Nov 23 15:45 cpu -> cpu,cpuacct
lrwxrwxrwx
1 root root 11 Nov 23 15:45 cpuacct -> cpu,cpuacct
drwxr
-xr-x 2 root root 0 Nov 23 15:45 cpu,cpuacct
drwxr
-xr-x 2 root root 0 Nov 23 15:45 cpuset
drwxr
-xr-x 2 root root 0 Nov 23 15:45 devices
drwxr
-xr-x 2 root root 0 Nov 23 15:45 freezer
drwxr
-xr-x 2 root root 0 Nov 23 15:45 hugetlb
drwxr
-xr-x 2 root root 0 Nov 23 15:45 memory
drwxr
-xr-x 2 root root 0 Nov 23 15:45 net_cls
drwxr
-xr-x 2 root root 0 Nov 23 15:45 perf_event
drwxr
-xr-x 4 root root 0 Nov 23 15:45 systemd

我们查看下上面容器启动的变化:

[root@ht5 docker]# docker ps | grep nginx
222e67a09d9a nginx
"/docker-entrypoint.…" 10 hours ago Up 10 hours 0.0.0.0:1080->80/tcp mycreate-nginx

  [root@ht5 /sys/fs/cgroup/memory/docker]# ll
  total 0
  drwxr-xr-x 2 root root 0 Apr 24 23:13 222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76

 //有变化的地方 

 [root@ht5 memory]# ll  //当前目录为/sys/fs/cgroup/memory
 ...
 drwxr-xr-x 6 root root 0 Apr 24 21:25 docker
 drwxr-xr-x 4 root root 0 Feb 22 10:28 kubepods
 drwxr-xr-x 2 root root 0 Feb 21 21:56 kube-proxy
 drwxr-xr-x 111 root root 0 Apr 24 18:12 system.slice
 drwxr-xr-x 2 root root 0 Feb 18 17:26 user.slice
  ....

 //该容器对应的资源

 [root@ht5 222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76]# ls
 cgroup.clone_children memory.kmem.limit_in_bytes memory.kmem.tcp.usage_in_bytes memory.memsw.max_usage_in_bytes memory.soft_limit_in_bytes tasks
 cgroup.event_control memory.kmem.max_usage_in_bytes memory.kmem.usage_in_bytes memory.memsw.usage_in_bytes memory.stat
 cgroup.procs memory.kmem.slabinfo memory.limit_in_bytes memory.move_charge_at_immigrate memory.swappiness
 memory.failcnt memory.kmem.tcp.failcnt memory.max_usage_in_bytes memory.numa_stat memory.usage_in_bytes
 memory.force_empty memory.kmem.tcp.limit_in_bytes memory.memsw.failcnt memory.oom_control memory.use_hierarchy
 memory.kmem.failcnt memory.kmem.tcp.max_usage_in_bytes memory.memsw.limit_in_bytes memory.pressure_level notify_on_release

 //看下/var/lib/docker下

[root@ht5 222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76]# pwd  //当前目录
/var/lib/docker/containers/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76

[root@ht5 222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76]# ll
total 28
-rw-r----- 1 root root 3081 Apr 24 23:13 222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76-json.log
drwx------ 2 root root 6 Apr 24 23:13 checkpoints
-rw------- 1 root root 3195 Apr 24 23:13 config.v2.json
-rw-r--r-- 1 root root 1240 Apr 24 23:13 hostconfig.json
-rw-r--r-- 1 root root 13 Apr 24 23:13 hostname
-rw-r--r-- 1 root root 174 Apr 24 23:13 hosts
drwx------ 3 root root 16 Apr 24 23:13 mounts
-rw-r--r-- 1 root root 290 Apr 24 23:13 resolv.conf
-rw-r--r-- 1 root root 71 Apr 24 23:13 resolv.conf.hash

查看比较详细的信息

[root@ht5 overlay2]# docker inspect 222e67a09d9a
[
{
"Id": "222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76",
"Created": "2022-04-24T15:13:19.716327281Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 79297,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-04-24T15:13:20.365642406Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:fa5269854a5e615e51a72b17ad3fd1e01268f278a6684c8ed3c5f0cdce3f230b",
"ResolvConfPath": "/var/lib/docker/containers/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76/hostname",
"HostsPath": "/var/lib/docker/containers/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76/hosts",
"LogPath": "/var/lib/docker/containers/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76/222e67a09d9a83e9649fbe07bb0e54258b1b52a1d355aed74694ead5c758cd76-json.log",
"Name": "/mycreate-nginx",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/usr/local/src/nginxcon:/usr/share/nginx/html"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "1080"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "shareable",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Data": {
//只读层
"LowerDir": "/var/lib/docker/overlay2/e5a85b04886cea66fdebbd420153b29599f4a18b753c9db7edf53bdb3d42de72-init/diff:/var/lib/docker/overlay2/29f10b82508ba9c336b1a04b59e56e8fa02e16c41331108618232965a5500e7e/diff:/var/lib/docker/overlay2/e18f942e47c0de76700f07e4f466a1ea61533251da88af883d44a53cc0911aab/diff:/var/lib/docker/overlay2/4b812095ef67178fea715b49f85a3049a7cc0b7ac4d64b1f356bdbf148e16700/diff:/var/lib/docker/overlay2/c341cf40a78d977bdeed820586fddeeb40eb7509a2d5f966a59ed48239a4827f/diff:/var/lib/docker/overlay2/34dd7d91e749216183020cbbd8b1c6ca5a8502e5242f02c4547d1518e495e1f6/diff:/var/lib/docker/overlay2/230e6fbe9e9c2828da0ae965d6607fb55215bd3977b5af3991a9001bf0f300c4/diff",
//联合层
          "MergedDir": "/var/lib/docker/overlay2/e5a85b04886cea66fdebbd420153b29599f4a18b753c9db7edf53bdb3d42de72/merged",
//可读写层
          "UpperDir": "/var/lib/docker/overlay2/e5a85b04886cea66fdebbd420153b29599f4a18b753c9db7edf53bdb3d42de72/diff", //diff是差异的地方
"WorkDir": "/var/lib/docker/overlay2/e5a85b04886cea66fdebbd420153b29599f4a18b753c9db7edf53bdb3d42de72/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "bind",
"Source": "/usr/local/src/nginxcon",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
"Config": {
"Hostname": "222e67a09d9a",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.21.6",
"NJS_VERSION=0.7.2",
"PKG_RELEASE=1~bullseye"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"Image": "nginx",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "NGINX Docker Maintainers "
},
"StopSignal": "SIGQUIT"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "af6ab3988204245873fe9d3022da38d6919659508e9b9087b4e036bce6d1a270",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "1080"
}
]
},
"SandboxKey": "/var/run/docker/netns/af6ab3988204",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "06c3b917475a61e1805035bbf41c50ed0eb7486a96891b593bbec90e84f5482d",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "1caead2ab69fd0c57f3a39c4ed39cc2fd5859677e822ee682f742181083b93b1",
"EndpointID": "06c3b917475a61e1805035bbf41c50ed0eb7486a96891b593bbec90e84f5482d",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
}
}
]
https://docs.docker.com/engine/reference/commandline/inspect/

 容器的网络命名空间名称

[root@ht5 overlay2]# docker network ls
NETWORK ID NAME DRIVER SCOPE
1caead2ab69f bridge bridge local
3cf5406d55f0 host host local
bf2d13101b37 none
null local

[root@ht5 overlay2]# docker inspect -f '{{.NetworkSettings.SandboxKey}}' 222e67a09d9a //容器id
 /var/run/docker/netns/af6ab3988204

方式二:Dockerfile配置文件构建镜像方式

1.创建一个文件,命名为Dockerfile,输入以下内容。
FROM nginx COPY html
/usr/share/nginx/html
解释: FROM nginx 代表以nginx 镜像为基础构建我们的镜像。
注意需要先在Dockerfile同目录创建html目录,不然会报错。
Dockerfile文件内可以自定义镜像内容,有很多指令可以用
2.在Dockerfile同目录下运行命令创建镜像
[root@ht5 bin]# docker build
-t my-nginx-image .
3.运行容器
docker run --name aozhejin-nginx -p 1080:80 -d my-nginx-image
//Dockerfile一般用于自定义镜像

方式三:docker -compose方式

1.创建一个docker-compose.yml文件,输入以下内容
version:
"3"services: nginx: image: nginx container_name: aozhejin-nginx ports: - "1080:80" volumes: - /data/html:/usr/share/nginx/html
/data/html创建一个index.html,随便输入个内容,等会访问测试。
2.执行启动命令
docker
-compose up -d

  



推荐阅读
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 本文探讨了如何通过编程手段在Linux系统中禁用硬件预取功能。基于Intel® Core™微架构的应用性能优化需求,文章详细介绍了相关配置方法和代码实现,旨在帮助开发人员有效控制硬件预取行为,提升应用程序的运行效率。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在安装 iOS 开发所需的 CocoaPods 时,用户可能会遇到多种问题。其中一个常见问题是,在执行 `pod setup` 命令后,系统无法连接到 GitHub 以更新 CocoaPods/Specs 仓库。这可能是由于网络连接不稳定、GitHub 服务器暂时不可用或本地配置错误等原因导致。为解决此问题,建议检查网络连接、确保 GitHub API 限制未被触发,并验证本地配置文件是否正确。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
author-avatar
mobiledu2502870073
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有