docker安装mongodb(全过程)

2,952 阅读4分钟

安装

安装依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里云镜像

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

yum install docker-ce docker-ce-cli containerd.io

到这一步报错了,信息如下:

[root@iZ8vb83amjsij4f1w2hnnqZ yezi]# yum install docker-ce docker-ce-cli containerd.io
Last metadata expiration check: 0:05:44 ago on Thu 21 May 2020 03:46:40 PM CST.
Error: 
 Problem: package docker-ce-3:19.03.9-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

出现这个错误的原因是缺少对应的containerd.io ,此时到阿里云的镜像地址查找需要的containerd.io 。

地址:mirrors.aliyun.com/docker-ce/l…

执行如下命令:

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

然后重新执行安装命令:

yum install docker-ce docker-ce-cli containerd.io

出现如上结果,安装成功

启动

设置开机启动

sudo systemctl enable docker

启动docker

sudo systemctl start docker

验证是否启动成功

运行docker的hello

sudo docker run hello-world

第一次运行会提示,没有找到镜像。docker会在现在本地仓库中寻找hello-world镜像,如果没有会到docker仓库中获取。等待片刻会自动下载

以上代表docker启动成功。

docker常用命令

下载镜像

docker pull <镜像名:tag> 如:下载centos镜像

docker pull centos docker pull sameersbn/redmine:latest

查看已下载镜像

docker images

删除容器

docker rm <容器名 or ID>

删除所有容器

docker rm $(docker ps -a -q)

查看容器日志

docker logs -f <容器名 or ID>

查看正在运行的容器

docker ps

查看所有容器

包含已停止的容器

docker ps -a

启动容器

docker start <容器名 or ID>

停止容器

支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。

docker stop <容器名 or ID>

杀死容器

暴力直接退出

docker kill <容器名 or ID>

后台运行容器

docker run -d

docker run -d -p 127.0.0.1:33301:22 demo

端口映射

端口映射有三种方式

  • 映射指定地址的主机端口到容器端口

    docker -p ip:hostPort:containerPort

    比如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口

  • 映射指定地址的任意可用端口到容器端口

    docker -p ip::containerPort

    比如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口

  • 映射本机的指定端口到容器的指定端口

    docer -p hostPort:containerPort

    比如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口

映射数据地址

这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址

docker -v /home/data:/opt/data

GUI管理

推荐使用 Portainer 作为容器的 GUI 管理方案。

官方地址:portainer.io/install.htm…

安装命令

docker volume create portainer_data

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

访问 IP:9000 即可进入容器管理页面,GUI界面安装成功

docker安装实例

docker安装mongodb

docker仓库地址:

hub.docker.com/_/mongo

还可以用 docker search mongo 命令来查看可用版本

选择需要安装的mongodb的版本,本文直接使用最新版,命令如下

docker pull mongo:latest

查看拉取到的镜像

docker images

docker运行mongodb

命令:

docker run -itd --name mongo -p 27017:27017 mongo --auth

参数解释:

  • --auth:需要密码才能访问。本文为了演示并没有开启这个参数。

查看运行状态

docker ps

运行成功。

使用以下命令添加用户和设置密码,并且尝试连接。

进入mongo命令操作

docker exec -it mongo mongo admin

选择数据库

use yezi

创建用户

db.createUser({user: "yezi",pwd: "你的密码",roles: [ { role: "root", db: "yezi" } ]})

以上使用docker安装mongodb完成

通过springboot验证

引入依赖

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency>

添加链接配置

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=yezi

编写文档对象

package com.yezi.springboot219.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

/**
 * @Description:
 * @Author: yezi
 * @Date: 2020/5/21 17:32
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "user")
public class UserToMongo {

    private String userId;

    private String name;

    private String email;

    private Date birthday;

}

编写测试用例

package com.yezi.springboot219;

import com.yezi.springboot219.entity.UserToMongo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Date;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot219ApplicationTests {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void contextLoads() {
        mongoTemplate.save(new UserToMongo("uid123456", "yezi", "335376584@qq.com", new Date()));
    }

}

执行测试用例,本文使用mongodb可视化查看工具robo 3T查看写入的数据

数据写入成功。以上为使用dokcer安装mongodb全过程。包含了安装docker,安装docker容器管理可视化界面,安装并配置mongodb,到使用java简单操作数据的保存。至于mongodb的更高级用法,后面会专门写文分享。