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