小编aqu*_*seb的帖子

Docker基础知识,如何保存已安装的包和编辑过的文件?

我对 Docker 的理解正确吗?

  1. docker run -it --rm --name verdaccio -p 4873:4873 -d verdaccio/verdaccio

如果我的服务器上尚不存在 verdaccio,则获取 verdaccio 并在特定端口上运行它。-d 将其分离,以便我可以离开终端并保持其运行,对吗?

  1. docker exec -it --user root verdaccio /bin/sh

让我 ssh 进入正在运行的容器。但是,如果我再次运行容器,我添加的任何 apk 包rm以及任何编辑的文件都会丢失。那么这个有什么用呢?我可以保留图像中的更改吗?

  1. /verdaccio/conf/config.yaml由于我需要编辑(容器中)中存在的 config.yaml ,因此保留此更改的唯一选择是从正在运行的实例中分离数据?还有别的办法吗?

    V_PATH=/path/on/my/server/verdaccio; docker run -it --rm --name 
    verdaccio -p 4873:4873 \
    -v $V_PATH/conf:/verdaccio/conf \
    -v $V_PATH/storage:/verdaccio/storage \
    -v $V_PATH/plugins:/verdaccio/plugins \
    verdaccio/verdaccio
    
    Run Code Online (Sandbox Code Playgroud)

然而这个命令会抛出

fatal--- cannot open config file /verdaccio/conf/config.yaml: ENOENT: no such file or directory, open '/verdaccio/conf/config.yaml'
Run Code Online (Sandbox Code Playgroud)

docker

5
推荐指数
1
解决办法
3814
查看次数

如何检查 *struct 的所有字段是否为零?

我不太确定如何解决这个问题,请随意编辑。

通过下面的第一个代码块,我可以检查结构体的所有字段是否为零。

但实际上,注入到结构中的值作为args.Review接收(请参见下面的第二个代码块)。

在第二个代码块中,如何检查 args.Review 中的所有字段是否为零?

在 Golang Playground 上尝试一下

package main

import (
    "fmt"
    "reflect"
)

type review struct {
    Stars      *int32  `json:"stars" bson:"stars,omitempty" `
    Commentary *string `json:"commentary" bson:"commentary,omitempty"`
}

func main() {

    newReview := &review{
        Stars: nil,
        // Stars:   func(i int32) *int32 { return &i }(5),

        Commentary: nil,
        // Commentary: func(i string) *string { return &i }("Great"),
    }

    if reflect.DeepEqual(review{}, *newReview) {
        fmt.Println("Nothing")
    } else {
        fmt.Println("Hello")
    }

}
Run Code Online (Sandbox Code Playgroud)

在 Golang Playground 上尝试第二个代码 下面的代码出现两个错误:

prog.go:32:14:类型 args …

go

1
推荐指数
1
解决办法
9907
查看次数

标签 统计

docker ×1

go ×1