准备一个云服务器
https://github.com/docker/docker-install
2.然后ssh链接远程云服务,执行命令安装docker
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
信息记录
+ sh -c 'yum install -y -q docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras' warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20.10.21-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY docker-ce-20.10.21-3.el7.x86_64.rpm 的公钥尚未安装 导入 GPG key 0x621E9F35: 用户ID : "Docker Release (CE rpm) <docker@docker.com>" 指纹 : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 来自 : https://download.docker.com/linux/centos/gpg setsebool: SELinux is disabled.
3.安装docker compose
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
修改执行权限
sudo chmod +x /usr/local/bin/docker-compose
4.下载版本4的mongo镜像
docker pull mongo:4
首先在下面目录下修改docker的镜像源,加速下载
/etc/docker/daemon.json { "registry-mirrors":["https://registry.docker-cn.com"] } //重启docker使生效 service docker restart
注意,直接vi /etc/docker/daemon.json 添加下面的镜像会报错
cd /etc mkdir docker cd docker vi daemon.json
//下载docker 镜像 docker pull mongo:4 //查看本地安装的docker镜像 docker images //运行docker镜像 -d:后台运行, -p:指定宿主端口:docker内进程端口的关系 // mongo:4运行mongo4版本 --name:运行的docker在进程中的名字 //注意:对宿主机设置放行10050端口,简单的方式是关闭防火墙 docker run -d --name some-mongo -p 10050:27017 mongo:4
5.为镜像配一个默认启动配置
version: '3.1' services: mongo: image: mongo restart: always environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root123456 ports: #端口映射 宿主端口:容器端口 - 27017:27017 volumes: #数据备份,在宿主机保存数据文件 宿主保存目录:容器中的数据目录 - /home/mongotest:/data/db
然后ssh登录云主机,将配置文件设置到主机上的docker-compose.yml文件上
[root@VM-0-11-centos ~]# cd /home/ [root@VM-0-11-centos home]# ls [root@VM-0-11-centos home]# mkdir mongotest [root@VM-0-11-centos home]# cd mongotest/ [root@VM-0-11-centos mongotest]# vi docker-compose.yml
执行更新,注意此时docker-compose会检测配置文件,如果docker-compose.yml里面的imags不存在会自动下载,并运行。
docker-compose up -d
6.修改防火墙
//查看docker运行进程 docker ps //简单的方式是关闭防火墙 Centos: service firewalld stop //对防火墙设置放行这个端口 firewall-cmd --zone=public --add-port=10050/tcp --permanent //重启 firewall-cmd --reload //查看防火墙状态 firewall-cmd --state
https://robomongo.org //将网页登录成功后产生的md5复制,然后粘贴到app启动的code中,才能正常打开 3045a653-0bf5-4ac7-99e2-9c315fdf462d
登录成功后,建立本地与远程docker的链接
//初始化工程 npm init -y //安装第三方模块mongoose npm install --save mongoose
然后链接云服务器中运行的docker镜像,mongodb数据库
const mongoose = require('mongoose'); //test:123456@ @前面表示:数据库的用户名:密码 //27017/testdb 27017端口后面表示:链接的数据库 mongoose.connect("mongodb://test:123456@1.15.55.28:27017/testdb", {useNewUrlParser: true, useUnifiedTopology: true}); const Cat = mongoose.model('Cat', { name: String }); const kitty = new Cat({ name: 'Zildjian' }); kitty.save(function (err) { if (err) { console.log('err',err) } else { console.log('miao!!') } })
代码例子:gitHub库:https://github.com/zhfei/ReactBasicKnowledge 中的mongoose_demo部分
本文为从零开始写 Docker 系列第十六篇,利用 linux 下的 Veth、Bridge、iptables 等等相关技术,构建容器网络模型,为容器插上”网线“。