如何使用docker with mongo来实现复制和开放认证

时间:2017-07-09 03:01:35

标签: mongodb authentication docker replication

我想使用docker运行vm mongodb,同时,mongo配置文件使用我自己定义的配置文件来存档复制和开放身份验证。

扫描某些文件但无法解决问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

docker mongo image有一个docker-entrypoint.sh calls in the Dockerfile

检查您是否可以:

  • 创建自己的图片,创建合适的用户并通过身份验证重新启动mongo:请参阅“umputun/mongo-auth”及其init.sh script

  • 或在#include <stdlib.h> #include <stdio.h> #include <elf.h> int main(int argc, char** argv) { if (argc <= 1) return -1; FILE* fp = fopen(argv[1], "r+"); Elf64_Ehdr teh; fread(&teh, sizeof(teh), 1, fp); fseek(fp, 0, SEEK_SET); if (teh.e_ident[EI_CLASS] == ELFCLASS64) { Elf64_Ehdr eh; fread(&eh, sizeof(eh), 1, fp); Elf64_Phdr* ph = malloc(eh.e_phnum * eh.e_phentsize); Elf64_Shdr* sh = malloc(eh.e_shnum * eh.e_shentsize); fseek(fp, eh.e_phoff, SEEK_SET); fread(ph, eh.e_phentsize, eh.e_phnum, fp); fseek(fp, eh.e_shoff, SEEK_SET); fread(sh, eh.e_shentsize, eh.e_shnum, fp); for (int i = 0; i < eh.e_phnum; i++) { if (ph[i].p_vaddr <= eh.e_entry && ph[i].p_vaddr + ph[i].p_memsz > eh.e_entry) { fseek(fp, eh.e_phoff + i * eh.e_phentsize + (unsigned int)&((Elf64_Phdr*)0)->p_flags, SEEK_SET); ph[i].p_flags |= PF_W; fwrite(&ph[i].p_flags, sizeof(ph[i].p_flags), 1, fp); } } for (int i = 0; i < eh.e_shnum; i++) { if (sh[i].sh_addr <= eh.e_entry && sh[i].sh_addr + sh[i].sh_size > eh.e_entry) { fseek(fp, eh.e_shoff + i * eh.e_shentsize + (unsigned int)&((Elf64_Shdr*)0)->sh_flags, SEEK_SET); sh[i].sh_flags |= SHF_WRITE; fwrite(&sh[i].sh_flags, sizeof(sh[i].sh_flags), 1, fp); } } free(ph); free(sh); } else { Elf32_Ehdr eh; fread(&eh, sizeof(eh), 1, fp); Elf32_Phdr* ph = malloc(eh.e_phnum * eh.e_phentsize); Elf32_Shdr* sh = malloc(eh.e_shnum * eh.e_shentsize); fseek(fp, eh.e_phoff, SEEK_SET); fread(ph, eh.e_phentsize, eh.e_phnum, fp); fseek(fp, eh.e_shoff, SEEK_SET); fread(sh, eh.e_shentsize, eh.e_shnum, fp); for (int i = 0; i < eh.e_phnum; i++) { if (ph[i].p_vaddr <= eh.e_entry && ph[i].p_vaddr + ph[i].p_memsz > eh.e_entry) { fseek(fp, eh.e_phoff + i * eh.e_phentsize + (unsigned int)&((Elf32_Phdr*)0)->p_flags, SEEK_SET); ph[i].p_flags |= PF_W; fwrite(&ph[i].p_flags, sizeof(ph[i].p_flags), 1, fp); } } for (int i = 0; i < eh.e_shnum; i++) { if (sh[i].sh_addr <= eh.e_entry && sh[i].sh_addr + sh[i].sh_size > eh.e_entry) { fseek(fp, eh.e_shoff + i * eh.e_shentsize + (unsigned int)&((Elf32_Shdr*)0)->sh_flags, SEEK_SET); sh[i].sh_flags |= SHF_WRITE; fwrite(&sh[i].sh_flags, sizeof(sh[i].sh_flags), 1, fp); } } free(ph); free(sh); } fflush(fp); fclose(fp); return 0; } 中安装createUser.js脚本 请参阅“how to make a mongo docker container with auth