使用Docker部署服務


一、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、新建文件

    mkdir www
    echo 'hello docker!!' >> www/index.html 
 
  4、啟動鏡像
    docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html -d nginx 
    80:80代表我的宿主機的端口:容器類的端口
    如果運行結果是一串uuid,那么在瀏覽器打開 http://localhost/會看到
    
  5、查看進程
    docker ps
    docker ps -a // 查看全部 

  6、 -t 選項讓Docker分配一個偽終端(pseudo-tty)並綁定到容器的標准輸入上, -i 則讓容器的標准輸入保持打開,eu9是CONTAINER ID 的前三位

    docker exec -it eu9 /bin/bash 

  7、停止鏡像
    docker stop eu9
 
  8、刪除鏡像(前提是鏡像已經stop)
    docker rm eu9 

  注意⚠️:也可以使用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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM