Docker容器要使用相同的Nexus卷?

时间:2018-08-24 18:57:55

标签: docker nexus docker-volume nexus3

我运行以下命令:

docker run --name=nexus2 -p 8082:8081 --volumes-from nexus sonatype/nexus3

现在可以说我将工件上传到Nexus,并停止了联系容器。

如果我想在端口8082上打开另一个Nexus容器,我应该运行什么Docker命令,以使它使用与端口8081上相同的卷(因此,当我运行此容器时,它已经包含了我之前上传的工件

基本上,我希望两个Nexus容器都使用相同的存储空间,这样,如果我将工件上传到一个端口,另一个端口也将拥有它。

我运行了此命令,但它似乎不起作用:

def generate(dir, shuffle, batch_size):
    def parse(serialized):
        features = {
            'mean_rgb': tf.FixedLenFeature([1024], tf.float32),
            'category': tf.FixedLenFeature([], tf.int64)
        }
        parsed_example = tf.parse_single_example(serialized=serialized, features=features)
        vrv = parsed_example['mean_rgb']
        label = parsed_example['category']
        d = dict(zip(['mean_rgb'], [vrv])), label
        return d

    dataset = tf.data.TFRecordDataset(dir).repeat(1)
    dataset = dataset.map(parse)
    if shuffle:
        dataset = dataset.shuffle(8000)
    dataset = dataset.batch(batch_size)
    iterator = dataset.make_one_shot_iterator()
    next = iterator.get_next()
    print(next)
    return next

def batch_generator(dir, shuffle=False, batch_size=64):
    sess = K.get_session()
    while True:
        yield sess.run(generate(dir, shuffle, batch_size))

num_classes = 29
batch_size = 64

yt8m_train = [os.path.join(yt8m_dir_train, x) for x in read_all_file_names(yt8m_dir_train) if '.tfrecord' in x]

yt8m_test = [os.path.join(yt8m_dir_test, x) for x in read_all_file_names(yt8m_dir_test) if '.tfrecord' in x]

feature_columns = [tf.feature_column.numeric_column(k) for k in ['mean_rgb']]

#batch_generator(yt8m_test).__next__()

classifier = tf.estimator.DNNClassifier(
    feature_columns=feature_columns,
    hidden_units=[1024, 1024],
    n_classes=num_classes,
    model_dir=model_dir)

classifier.train(
    input_fn=lambda: generate(yt8m_train, True, batch_size))

1 个答案:

答案 0 :(得分:0)

与显式Docker卷相比,

Bind mounts(作为您的“卷”使用)的功能有限。

我相信model.clear({silent: true}).set(model.defaults); 标志仅适用于Docker管理的卷。

为了使用此标志在容器之间共享卷,您可以让docker使用run命令为您创建一个卷。

示例:

--volumes-from

以上命令将为您创建一个名为$ docker run -d -p 8081:8081 --name nexus -v nexus-volume:/nexus-data sonatype/nexus3的Docker管理卷。您可以使用命令nexus-volume查看创建的卷的详细信息。

现在,当您要运行另一个具有相同体积的容器时,可以根据需要使用$ docker volume inspect nexus-volume命令。

这样做:

--volumes-from

应该给您想要的行为。