一、Docker概念
1、操作系統層面的虛擬化技術
2、隔離的進程獨立於宿主和其它的隔離的進程 - 容器
3、GO語言開發
4、特點:高效的利用系統資源;快速的啟動時間;一致的運行環境;持續交付和部署;更輕松的遷移
5、核心:鏡像、容器、倉庫
二、安裝docker
https://yeasy.gitbooks.io/docker_practice/content/install/mac.html?q=
按照文檔安裝docker,並且注冊賬號,當電腦的右上角出現小鯨魚的圖標,且顯示Docker Desktop is running,安裝啟動成功
三、Docker構建一個Nginx服務器
1、拉取官方鏡像
docker pull nginx
2、查看
docker images nginx
3、新建文件
echo 'hello docker!!' >> www/index.html

docker ps -a // 查看全部
6、 -t 選項讓Docker分配一個偽終端(pseudo-tty)並綁定到容器的標准輸入上, -i 則讓容器的標准輸入保持打開,eu9是CONTAINER ID 的前三位
docker exec -it eu9 /bin/bash
注意⚠️:也可以使用Dockerfile定制鏡像
1、新建Dockerfile文件
FROM nginx:latest RUN echo '<h1>Hello, Kaikeba!</h1>' > /usr/share/nginx/html/index.html
2、定制鏡像
docker build -t mynginx .
3、運行:-d 守護態運行
docker run -p 80:80 -d mynginx
五、使用Docker定制node鏡像
1、node項目下新建Dockerfile
#制定node鏡像的版本 FROM node:10-alpine #移動當前目錄下面的文件到app目錄下 ADD . /app/ #進入到app目錄下面,類似cd WORKDIR /app #安裝依賴 RUN npm install #對外暴露的端口 EXPOSE 3000 #程序啟動腳本 CMD ["node", "app.js"]
2、定制鏡像
docker build -t mynode .
3、運行:-d 守護態運行
docker run -p 3000:3000 -d mynode
六、Docker-Compose:部署Mongo + MongoExpress
添加docker-compose.yml
version: '3.1' services: mongo: image: mongo restart: always ports: - 27017:27017 mongo-express: image: mongo-express restart: always ports: - 8081:8081
mongoose.js代碼中添加Mongoose調用
// mongoose.js const mongoose = require("mongoose"); // 1.連接 mongoose.connect("mongodb://mongo:27017/test", { useNewUrlParser: true }); const conn = mongoose.connection; conn.on("error", () => console.error("連接數據庫失敗"));
app.js
// app.js const mongoose = require('mongoose'); mongoose.connect('mongodb://mongo:27017/test', {useNewUrlParser: true}); const Cat = mongoose.model('Cat', { name: String }); Cat.deleteMany({}) const kitty = new Cat({ name: 'Zildjian' }); kitty.save().then(() => console.log('meow')); app.use(async ctx => { ctx.body = await Cat.find() })
運行
docker-compose up
后台運行
docker-compose up -d
強制重新構建並啟
docker-compose up -d --force-recreate --build