2020-04-14 19:50:27
本文我们准备学习如何构建MongoDB Docker镜像。以及如何推送镜像到Docker Hub registr和与其他人共享。
使用docker和容器部署mongodb实例有几个好处:
我们来创建Dockerfile并开始构建它:
以下说明的可选的,不过在Dockerfile开头添加注释可以说明它的目的:
# Dockerizing MongoDB: Dockerfile for building MongoDB images # Based on ubuntu:latest, installs MongoDB following the instructions from: # http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
我们使用从Docker Hub最新的Ubuntu版本来构建镜像。
# Format: FROM repository[:version] FROM ubuntu:latest
然后声明此Dockerfile的维护者:
# Format: MAINTAINER Name <email@addr.ess> MAINTAINER M.Y. Name <myname@addr.ess>
导入MongoDB公共GPG密钥。然后创建一个MongoDB仓库文件。
# Installation: # Import MongoDB public GPG key AND create a MongoDB list file RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 RUN echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.0.list
完成这些初始准备后我们就可以更新软件包并安装MongoDB。
# Update apt-get sources AND install MongoDB RUN apt-get update && apt-get install -y mongodb-org
MongoDB需要一个数据目录。
# Create the MongoDB data directory RUN mkdir -p /data/db
最后设置ENTRYPOINT来让docker从镜像运行一个容器时执行这个ENTRYPOINT。对于端口,使用EXPOSE暴露。
# Expose port 27017 from the container to the host EXPOSE 27017 # Set usr/bin/mongod as the dockerized entry-point application ENTRYPOINT ["/usr/bin/mongod"]
开始构建镜像。
# Format: docker build --tag/-t <user-name>/<repository> . # Example: $ docker build --tag my/repo .
首先登录到docker hub。
# Log-in $ docker login Username: ..
开始推送:
# Push the image # Format: docker push <user-name>/<repository> $ docker push my/repo The push refers to a repository [my/repo] (len: 1) Sending image list Pushing repository my/repo (1 tags) ..
使用刚构建好的MongoDB镜像,我们可以运行一个或多个MongoDB实例。
# Basic way # Usage: docker run --name <name for container> -d <user-name>/<repository> $ docker run -p 27017:27017 --name mongo_instance_001 -d my/repo # Dockerized MongoDB, lean and mean! # Usage: docker run --name <name for container> -d <user-name>/<repository> --noprealloc --smallfiles $ docker run -p 27017:27017 --name mongo_instance_001 -d my/repo --smallfiles # Checking out the logs of a MongoDB container # Usage: docker logs <name for container> $ docker logs mongo_instance_001 # Playing with MongoDB # Usage: mongo --port <port you get from `docker ps`> $ mongo --port 27017 # If using docker-machine # Usage: mongo --port <port you get from `docker ps`> --host <ip address from `docker-machine ip VM_NAME`> $ mongo --port 27017 --host 192.168.59.103
如果需要在一个主机运行多个实例,需要映射不同的端口。
# Start two containers and map the ports $ docker run -p 28001:27017 --name mongo_instance_001 -d my/repo $ docker run -p 28002:27017 --name mongo_instance_002 -d my/repo # Now you can connect to each MongoDB instance on the two ports $ mongo --port 28001 $ mongo --port 28002
如何使用Docker切換不同的MongoDB
05-06
Docker命令行参考(9) – Docker import从tarball导入创建镜像
03-24
Docker命令行参考(6) – Docker commit提交容器的更改创建新镜像
07-15
Docker创建的集群下使用ansible部署zookeeper
04-26
Docker使用示例(4) – 清理容器和镜像
06-10
Docker命令行参考(11) – Docker load从tar归档文件或STDIN导入镜像
07-20
Docker命令行参考(4) – Docker inspect显示容器或镜像相关信息
07-19
Ubuntu系统配置Nginx Node.js MongoDB环境
03-19
ubuntu 安装MongoDB
07-01
Docker run参考(8) – 退出状态码
05-15
Dockerfile参考(1) – 用法
05-22
Dockerfile参考(2) – 格式
05-31
Docker使用示例(3) – 调试容器
06-16
Docker命令行参考(14) – Docker attach附着到一个运行中的容器
07-19
Docker命令行参考(18) – Docker exec在运行中的容器执行一个命令
06-02
Docker命令行参考(26) – Docker stats实时显示容器资源使用统计
06-21
Docker安装配置tomcat jdk
06-21
Docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀
06-26
Ubuntu 16.04使用Docker部署WordPress
06-13
使用 Docker 搭建 Tomcat 运行环境
07-24