提交
This commit is contained in:
parent
e3385e1464
commit
933a41b09f
@ -1426,6 +1426,43 @@ NLog 配置文件是一个以`nlog`为根节点的 XML 文件。`nlog`节点可
|
|||||||
</targets>
|
</targets>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
###### 参数
|
||||||
|
|
||||||
|
**存档选项**
|
||||||
|
|
||||||
|
- **archiveFileName** - 要用于存档的文件的名称。布局
|
||||||
|
它可能包含一个特殊的占位符{#},该占位符将被一系列数字替换,具体取决于存档策略。使用的哈希字符的数量决定了用于文件编号的数字位数。
|
||||||
|
|
||||||
|
> 警告:在NLog 4.5之前,如果在未指定特殊占位符{#}的情况下配置了`maxArchiveFiles`,则会导致非常激进的清理。NLog 4.4将从存档文件夹中删除任何文件(不仅仅是日志文件),因此请确保指定一个隔离文件夹。在NLog 4.5(和更高版本)中,清除通配符不是那么危险,并且允许相同的文件夹存档,这一点已经得到修复。
|
||||||
|
|
||||||
|
- **archiveNumbering** - 文件存档的编号方式。另请参阅归档编号示例
|
||||||
|
可能的值:
|
||||||
|
|
||||||
|
- Rolling - 滚动样式编号(最近的始终是#0,然后是#1、...、#N)
|
||||||
|
|
||||||
|
- Sequence - 序列样式编号。最新的档案编号最高。
|
||||||
|
|
||||||
|
- Date - 日期样式编号。日期的格式根据`archiveDateFormat`
|
||||||
|
|
||||||
|
> 警告:在NLog版本之前。4.5.7这样的话,这将不能与`aiveAboveSize`一起工作。较新版本将正确合并到存档中的现有文件中。
|
||||||
|
|
||||||
|
- DateAndSequence - 日期和顺序的组合。档案将标记上一时期(年、月、日)的日期时间。最新的档案编号最高(与日期相结合)。日期的格式是根据`archiveDateFormat`的值设置的。
|
||||||
|
|
||||||
|
- **archiveEvery** - 指示是否在每次经过指定时间时自动存档日志文件。
|
||||||
|
可能的值:
|
||||||
|
|
||||||
|
- Day - 每天存档。
|
||||||
|
|
||||||
|
- **archiveAboveSize** - 日志文件将自动存档的大小(以字节为单位)。Long
|
||||||
|
|
||||||
|
> 在NLog版本之前。4.5.7那么这将不能与`filveNumbering=Date`一起使用。较新版本将正确合并到存档中的现有文件中。
|
||||||
|
|
||||||
|
- **maxArchiveFiles** - 应保留的最大存档文件数。如果MaxArchiveFiles小于或等于0,则不会删除旧文件,Integer 默认为:0
|
||||||
|
|
||||||
|
**性能调整选项**
|
||||||
|
|
||||||
|
- **keepFileOpen** - 指示是否在每个日志记录事件时保持打开日志文件,而不是打开和关闭它。当设置为`false`时,它将允许其他应用程序“接管”文件句柄,并且NLog将无法记录到文件。当设置为`false`时,它将对性能造成重大影响,因为打开/关闭文件句柄的成本很高。Boolean 默认值:True(在NLog 5.0之前,默认值为`false`)
|
||||||
|
|
||||||
##### rules
|
##### rules
|
||||||
|
|
||||||
`rules`节点是日志路由规则的集合,由一个或多个`logger`元素组成。每个`logger`元素记录了logger的名字、目标输出以及要处理的日志等级。NLog 从路由规则表的第一个`logger`开始处理,如果当前`logger`有效,则日志信息将被输出到指定的`target`。如果某个`logger`被标记为`final`,那么其后的`logger`都会被忽略。
|
`rules`节点是日志路由规则的集合,由一个或多个`logger`元素组成。每个`logger`元素记录了logger的名字、目标输出以及要处理的日志等级。NLog 从路由规则表的第一个`logger`开始处理,如果当前`logger`有效,则日志信息将被输出到指定的`target`。如果某个`logger`被标记为`final`,那么其后的`logger`都会被忽略。
|
||||||
@ -1672,6 +1709,135 @@ NLog.LogManager.Shutdown(); // Flush and close down internal threads and timers
|
|||||||
|
|
||||||
# 远程过程调用应用
|
# 远程过程调用应用
|
||||||
|
|
||||||
|
## 使用 gRPC 服务
|
||||||
|
|
||||||
|
### proto 文件
|
||||||
|
|
||||||
|
gRPC 使用协定优先方法进行 API 开发。默认情况下,协议缓冲区 (protobuf) 用作接口定义语言 (IDL)。`.proto`文件包含:
|
||||||
|
|
||||||
|
- gRPC 服务的定义。
|
||||||
|
- 在客户端与服务器之间发送的消息。
|
||||||
|
|
||||||
|
创建 greet.proto 文件:
|
||||||
|
|
||||||
|
- 定义`Greeter`服务。
|
||||||
|
- `Greeter`服务定义`SayHello`调用。
|
||||||
|
- `SayHello`发送`HelloRequest`消息并接受`HelloReply`消息:
|
||||||
|
|
||||||
|
```protobuf
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
option csharp_namespace = "GrpcGreeter";
|
||||||
|
|
||||||
|
package greet;
|
||||||
|
|
||||||
|
// greeting 服务定义。
|
||||||
|
service Greeter {
|
||||||
|
// 发送一个 greeting
|
||||||
|
rpc SayHello (HelloRequest) returns (HelloReply);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 包含用户名的请求消息。
|
||||||
|
message HelloRequest {
|
||||||
|
string name = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 包含Greetings的响应消息。
|
||||||
|
message HelloReply {
|
||||||
|
string message = 1;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 将`.proto`文件添加到 C# 应用
|
||||||
|
|
||||||
|
通过将`.proto`文件添加到`<Protobuf>`项组中,可将该文件包含在项目中:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<ItemGroup>
|
||||||
|
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
|
||||||
|
</ItemGroup>
|
||||||
|
```
|
||||||
|
|
||||||
|
默认情况下,`<Protobuf>`引用将生成具体的客户端和服务基类。可使用引用元素的`GrpcServices`特性来限制 C# 资产生成。有效`GrpcServices`选项如下:
|
||||||
|
|
||||||
|
- `Both`(如果不存在,则为默认值)
|
||||||
|
- `Server`
|
||||||
|
- `Client`
|
||||||
|
- `None`
|
||||||
|
|
||||||
|
### 对`.proto`文件的 C# 工具支持
|
||||||
|
|
||||||
|
需要工具包`Grpc.Tools`才能从`.proto`文件生成 C# 资产。生成的资产(文件):
|
||||||
|
|
||||||
|
- 在每次生成项目时按需生成。
|
||||||
|
- 不会添加到项目中或是嵌入到源代码管理中。
|
||||||
|
- 是包含在 obj 目录中的生成工件。
|
||||||
|
|
||||||
|
服务器和客户端项目都需要此包。`Grpc.AspNetCore`元包中包含对`Grpc.Tools`的引用。服务器项目可以使用 Visual Studio 中的包管理器或通过将`<PackageReference>`添加到项目文件来添加`Grpc.AspNetCore`:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<PackageReference Include="Grpc.AspNetCore" Version="2.32.0" />
|
||||||
|
```
|
||||||
|
|
||||||
|
客户端项目应直接引用`Grpc.Tools`以及使用 gRPC 客户端所需的其他包。运行时不需要工具包,因此依赖性标记为`PrivateAssets="All"`:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<PackageReference Include="Google.Protobuf" Version="3.18.0" />
|
||||||
|
<PackageReference Include="Grpc.Net.Client" Version="2.52.0" />
|
||||||
|
<PackageReference Include="Grpc.Tools" Version="2.40.0">
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
</PackageReference>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 生成的 C# 资产
|
||||||
|
|
||||||
|
工具包会生成表示在所包含`.proto`文件中定义的消息的 C# 类型。
|
||||||
|
|
||||||
|
对于服务器端资产,会生成抽象服务基类型。基类型包含`.proto`文件中所含的所有 gRPC 调用的定义。创建一个派生自此基类型并为 gRPC 调用实现逻辑的具体服务实现。对于`greet.proto`(前面所述的示例),会生成一个包含虚拟`SayHello`方法的抽象`GreeterBase`类型。具体实现`GreeterService`会替代该方法,并实现处理 gRPC 调用的逻辑。
|
||||||
|
|
||||||
|
```c#
|
||||||
|
public class GreeterService : Greeter.GreeterBase
|
||||||
|
{
|
||||||
|
private readonly ILogger<GreeterService> _logger;
|
||||||
|
public GreeterService(ILogger<GreeterService> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
|
||||||
|
{
|
||||||
|
return Task.FromResult(new HelloReply
|
||||||
|
{
|
||||||
|
Message = "Hello " + request.Name
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
对于客户端资产,会生成一个具体客户端类型。`.proto`文件中的 gRPC 调用会转换为具体类型中的方法,可以进行调用。对于`greet.proto`(前面所述的示例) ,会生成一个`GreetClient`类型。调用`GreeterClient.SayHelloAsync`以发起对服务器的gRPC调用。
|
||||||
|
|
||||||
|
```c#
|
||||||
|
// The port number must match the port of the gRPC server.
|
||||||
|
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
|
||||||
|
var client = new Greeter.GreeterClient(channel);
|
||||||
|
var reply = await client.SayHelloAsync(
|
||||||
|
new HelloRequest { Name = "GreeterClient" });
|
||||||
|
Console.WriteLine("Greeting: " + reply.Message);
|
||||||
|
Console.WriteLine("Press any key to exit...");
|
||||||
|
Console.ReadKey();
|
||||||
|
```
|
||||||
|
|
||||||
|
默认情况下,会为`<Protobuf>`项组中包含的每个`.proto`文件都生成服务器和客户端资产。若要确保服务器项目中仅生成服务器资产,请将`GrpcServices`属性设置为`Server`。
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<ItemGroup>
|
||||||
|
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
|
||||||
|
</ItemGroup>
|
||||||
|
```
|
||||||
|
|
||||||
|
同样,该属性在客户端项目中设置为`Client`。
|
||||||
|
|
||||||
## 调用 gRPC 服务
|
## 调用 gRPC 服务
|
||||||
|
|
||||||
### 客户端工厂集成
|
### 客户端工厂集成
|
||||||
|
|||||||
@ -4,7 +4,7 @@ date: 2021-03-23 10:30:31
|
|||||||
author: 文永达
|
author: 文永达
|
||||||
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
top_img: https://gcore.jsdelivr.net/gh/volantis-x/cdn-wallpaper/abstract/67239FBB-E15D-4F4F-8EE8-0F1C9F3C4E7C.jpeg
|
||||||
---
|
---
|
||||||
# Docker
|
# Docker 简介
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ CentOS占CPU Docker CPU引擎占用低
|
|||||||
多个应用放到一起 每个应用服务都是一个容器,相互隔离
|
多个应用放到一起 每个应用服务都是一个容器,相互隔离
|
||||||
一个独立的操作系统 必须依赖于操作系统,推荐使用Linux
|
一个独立的操作系统 必须依赖于操作系统,推荐使用Linux
|
||||||
|
|
||||||
## docker安装:
|
# Docker 安装
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
|
||||||
@ -46,19 +46,21 @@ yum install docker-ce-18.03.1.ce
|
|||||||
Docker配置阿里云镜像加速
|
Docker配置阿里云镜像加速
|
||||||
https://www.cnblogs.com/LUA123/p/11401962.html
|
https://www.cnblogs.com/LUA123/p/11401962.html
|
||||||
|
|
||||||
## 查看docker 信息
|
# Docker 使用
|
||||||
|
|
||||||
|
## 查看 Docker 信息
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker info
|
docker info
|
||||||
```
|
```
|
||||||
|
|
||||||
## 查看docker 镜像 image
|
## 查看 Docker 镜像 image
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker images
|
docker images
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker 安装镜像 image
|
## Docker 安装镜像 image
|
||||||
|
|
||||||
MySQL 5.7
|
MySQL 5.7
|
||||||
|
|
||||||
@ -66,7 +68,7 @@ MySQL 5.7
|
|||||||
docker pull mysql:5.7
|
docker pull mysql:5.7
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker 移除镜像 image
|
## Docker 移除镜像 image
|
||||||
|
|
||||||
若已有镜像用于容器,请先将容器删除
|
若已有镜像用于容器,请先将容器删除
|
||||||
|
|
||||||
@ -121,7 +123,7 @@ docker重启容器
|
|||||||
docker restart <container id>
|
docker restart <container id>
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker容器与宿主机时间不同步
|
## Docker 容器与宿主机时间不同步
|
||||||
|
|
||||||
对于已创建的容器:
|
对于已创建的容器:
|
||||||
|
|
||||||
@ -135,9 +137,70 @@ docker cp /usr/share/zoneinfo/Asia/Shanghai <containername>:/etc/localtime
|
|||||||
docker run -d -p 8080:80 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone <containername>
|
docker run -d -p 8080:80 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone <containername>
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker启动MariaDB
|
## 修改运行中的 Docker 容器的端口映射和挂载目录
|
||||||
|
|
||||||
拉去mariadb镜像
|
方法一:删除原有容器,重建新容器
|
||||||
|
|
||||||
|
参考以上移除容器,启动容器
|
||||||
|
|
||||||
|
方法二:修改配置文件,重启docker服务
|
||||||
|
|
||||||
|
容器配置文件路径:
|
||||||
|
|
||||||
|
/var/lib/docker/containers/[[hash_of_the_container]/hostconfig.json]
|
||||||
|
|
||||||
|
其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)
|
||||||
|
|
||||||
|
可以到/var/lib/docker/containers目录下,ls -l
|
||||||
|
|
||||||
|
```json
|
||||||
|
{"Binds":["/usr/docker/redis/redis-slave2.conf:/usr/local/etc/redis/redis.conf"],"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default","PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"6381"}]},"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}
|
||||||
|
```
|
||||||
|
|
||||||
|
重启docker服务,再启动容器服务就可以了。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
systemctl restart docker
|
||||||
|
docker ps -a
|
||||||
|
docker start <container id>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker 的镜像迁移到另一台服务器
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 找到想要移动的docker容器ID
|
||||||
|
dockerCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
|
58ac9237b040 redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6380->6379/tcp redis-slave1
|
||||||
|
454bb484f90a redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp redis-master
|
||||||
|
ps -a
|
||||||
|
|
||||||
|
# 提交变更,并且把容器保存成镜像,命名为redis-master
|
||||||
|
docker commit 454bb484f90a redis-master
|
||||||
|
# 把redis-master镜像保存成tar文件
|
||||||
|
docker save redis-master > /root/mysoftware/docker-file/redis/redis-master.tar
|
||||||
|
# 拷贝到新的机器,执行load命令
|
||||||
|
docker load < ./redis-master.tar
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker中 `<none>`镜像的来历及快速删除操作
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker rmi -f $(docker images | grep "none" | awk '{print $3}')
|
||||||
|
```
|
||||||
|
|
||||||
|
来历:在docker反复build一个Dockerfile,并且使用相同tag(或者不用tag)会存留很多none镜像。第一次build生成一个image id, 再次build后,会重新生成一个image id, 命名和上一个一样,所以上一个镜像的tag和名字就会自动变成 `<none>`。
|
||||||
|
|
||||||
|
## Docker Dockerfile
|
||||||
|
|
||||||
|
### 什么是Dockerfile?
|
||||||
|
|
||||||
|
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像
|
||||||
|
|
||||||
|
# Docker 实例
|
||||||
|
|
||||||
|
## Docker 启动 MariaDB
|
||||||
|
|
||||||
|
拉取mariadb镜像
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull mariadb:10.2
|
docker pull mariadb:10.2
|
||||||
@ -148,7 +211,7 @@ docker images
|
|||||||
docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2
|
docker run --name mariadb10.2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.2
|
||||||
```
|
```
|
||||||
|
|
||||||
## dockerRedis主从复制集群搭建
|
## Docker Redis主从复制集群搭建
|
||||||
|
|
||||||
拉取redis4.0.11镜像
|
拉取redis4.0.11镜像
|
||||||
|
|
||||||
@ -220,54 +283,9 @@ info Replication
|
|||||||
auth <slave-password>
|
auth <slave-password>
|
||||||
```
|
```
|
||||||
|
|
||||||
## dockerRedis哨兵高可用集群搭建
|
## Docker Redis哨兵高可用集群搭建
|
||||||
|
|
||||||
## docker的镜像迁移到另一台服务器
|
## Docker 安装 code-server
|
||||||
|
|
||||||
```shell
|
|
||||||
# 找到想要移动的docker容器ID
|
|
||||||
dockerCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
|
||||||
58ac9237b040 redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6380->6379/tcp redis-slave1
|
|
||||||
454bb484f90a redis:4.0.11 "docker-entrypoint.s…" 5 hours ago Up 2 hours 0.0.0.0:6379->6379/tcp redis-master
|
|
||||||
ps -a
|
|
||||||
|
|
||||||
# 提交变更,并且把容器保存成镜像,命名为redis-master
|
|
||||||
docker commit 454bb484f90a redis-master
|
|
||||||
# 把redis-master镜像保存成tar文件
|
|
||||||
docker save redis-master > /root/mysoftware/docker-file/redis/redis-master.tar
|
|
||||||
# 拷贝到新的机器,执行load命令
|
|
||||||
docker load < ./redis-master.tar
|
|
||||||
```
|
|
||||||
|
|
||||||
## 修改运行中的docker容器的端口映射和挂载目录
|
|
||||||
|
|
||||||
方法一:删除原有容器,重建新容器
|
|
||||||
|
|
||||||
参考以上移除容器,启动容器
|
|
||||||
|
|
||||||
方法二:修改配置文件,重启docker服务
|
|
||||||
|
|
||||||
容器配置文件路径:
|
|
||||||
|
|
||||||
/var/lib/docker/containers/[[hash_of_the_container]/hostconfig.json]
|
|
||||||
|
|
||||||
其中的hashofthecontainer是docker镜像的hash值,可以通过docker ps或者docker inspect containername查看。(CONTAINER ID就可以看出来)
|
|
||||||
|
|
||||||
可以到/var/lib/docker/containers目录下,ls -l
|
|
||||||
|
|
||||||
```json
|
|
||||||
{"Binds":["/usr/docker/redis/redis-slave2.conf:/usr/local/etc/redis/redis.conf"],"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default","PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"6381"}]},"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}
|
|
||||||
```
|
|
||||||
|
|
||||||
重启docker服务,再启动容器服务就可以了。
|
|
||||||
|
|
||||||
```shell
|
|
||||||
systemctl restart docker
|
|
||||||
docker ps -a
|
|
||||||
docker start <container id>
|
|
||||||
```
|
|
||||||
|
|
||||||
## docker安装code-server
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# 拉取镜像
|
# 拉取镜像
|
||||||
@ -286,7 +304,7 @@ cert: false
|
|||||||
docker run -d -u root -p 8088:8080 --name code-server -v /usr/docker/codeserver/config.yaml:/root/.config/code-server/config.yaml -v /usr/docker/codeserver:/home/code codercom/code-server
|
docker run -d -u root -p 8088:8080 --name code-server -v /usr/docker/codeserver/config.yaml:/root/.config/code-server/config.yaml -v /usr/docker/codeserver:/home/code codercom/code-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker安装Jenkins
|
## Docker 安装 Jenkins
|
||||||
|
|
||||||
搜索Jenkins镜像
|
搜索Jenkins镜像
|
||||||
|
|
||||||
@ -326,7 +344,7 @@ docker logs jenkins
|
|||||||
|
|
||||||
可以找到初始密码
|
可以找到初始密码
|
||||||
|
|
||||||
## docker安装Nginx
|
## Docker 安装 Nginx
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull nginx
|
docker pull nginx
|
||||||
@ -340,7 +358,7 @@ docker run -d -p 80:80 -p 443:443 --name nginxweb --privileged=true
|
|||||||
ps aux | grep "nginx: worker process" | awk '{print $1}'
|
ps aux | grep "nginx: worker process" | awk '{print $1}'
|
||||||
```
|
```
|
||||||
|
|
||||||
## docker安装SQL Server
|
## Docker 安装 SQL Server
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
mkdir /etc/sqlserver_data
|
mkdir /etc/sqlserver_data
|
||||||
@ -349,15 +367,7 @@ docker pull mcr.microsoft.com/mssql/server
|
|||||||
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Wyd210213" -p 1433:1433 --memory 2000M --name sqlserver2022 -v /etc/sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server
|
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=Wyd210213" -p 1433:1433 --memory 2000M --name sqlserver2022 -v /etc/sqlserver_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker中 `<none>`镜像的来历及快速删除操作
|
## Docker安装PostgreSQL
|
||||||
|
|
||||||
```shell
|
|
||||||
docker rmi -f $(docker images | grep "none" | awk '{print $3}')
|
|
||||||
```
|
|
||||||
|
|
||||||
来历:在docker反复build一个Dockerfile,并且使用相同tag(或者不用tag)会存留很多none镜像。第一次build生成一个image id, 再次build后,会重新生成一个image id, 命名和上一个一样,所以上一个镜像的tag和名字就会自动变成 `<none>`。
|
|
||||||
|
|
||||||
## docker安装PostgreSQL
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull postgres:latest
|
docker pull postgres:latest
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user