docker配置node、mysql、mongoDB、nginx開發環境


目錄

  • docker是什么?
  • docker基本概念
    * 容器
    * 鏡像
    * 容器鏈接
    * 倉庫
    * Docker compose
  • docker-compose.yml配置

docker是什么?

docker是一個開源的性能開銷極低的容器引擎,容器完全使用沙箱機制,相互之間不會有任何接口(類似iphone的app)。

docker基本概念

容器

容器是鏡像的實例,鏡像是容器的類,通過運行鏡像可以創建容器。

常用命令

//獲取鏡像
docker pull ubuntu
//運行鏡像
docker run -it ubuntu /bin/bash
//退出終端
exit
//查看所有容器
docker ps -a
//啟動容器
docker start <容器 ID>
//后台運行,加入-d參數默認不會進入容器
docker run -itd --name ubuntu-test ubuntu /bin/bash
//停止一個容器
docker stop <容器 ID>
//重啟容器
docker restart <容器 ID>
//進入后台啟動的容器
docker attach <容器 ID>,從容器退出會導致容器停止
docker exec -it <容器 ID> /bin/bash 從容器退出,不會導致容器停止(推薦)
//刪除容器
docker rm -f <容器 ID>

參數說明:

  • -i 交互式操作
  • -t 終端
  • -d 后台運行
  • ubuntu 鏡像
  • /bin/bash 放在鏡像后的是命令,我們希望有個交互式shell,因此使用/bin/bash

鏡像

常用命令

//查看鏡像
docker images
//獲取鏡像
docker pull ubuntu
//查找鏡像
docker search httpd
//刪除鏡像
docker rmi hello-world

創建鏡像

  • 在已有鏡像上修改
  • 使用Dockerfile文件構建

在已有鏡像上修改

更新鏡像:

在更新鏡像前我們需要先運行鏡像啟動容器
docker run -t -i ubuntu:15.10 /bin/bash

完成修改操作后,exit退出容器

使用docker commit提交修改

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

參數說明:

  • -m 提交的描述信息
  • -a 作者
  • runoob/ubuntu:v2 指定要構建的鏡像名

構建鏡像:

docker build -t runoob/centos:6.7 .

參數說明:

  • -t 要構建的鏡像名
  • . Dockerfile文件所在路徑,可以指定Dockerfile所在絕對路徑

容器鏈接

  • 端口映射
  • 容器互聯

倉庫

我們可以將構建好的鏡像上傳到docker倉庫中,這里不過多描述。

Docker compose

docker compose是定義和運行多容器應用的工具。我們搭建開發環境和生產環境需要用到多個容器,所以要配置docker-compose.yml文件。

docker-compose.yml配置

version: "3"
services: 
  web:
    image: node:12.16.1
    working_dir: /code
    volumes: 
      - .:/code
    ports: 
      - "8360:8360"
    command: npm start
  mysql:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    volumes: 
      - ./data:/var/lib/mysql
    restart: always
    environment: 
      - MYSQL_USER=chunshan
      - MYSQL_PASSWORD=123456
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=think-one
   mongo:
    image: mongo
    volumes:
      - ./data:/data/db
    ports:
      - "27017:27017"
    command: --storageEngine wiredTiger --auth
    ports: 
      - "3306:3306"
  

注意:

docker 容器一但刪除所有相關的數據都會消失,所以要使用volumes將數據掛載到項目文件加下,防止數據丟失造成損失。

參考資源:

https://www.runoob.com/docker/docker-compose.html
https://www.cnblogs.com/lostyu/p/docker_dev.html


免責聲明!

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



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