让前端飞

Docker基础入门

2020-11-04  本文已影响0人  前端辉羽

1.Doker是什么

2.Docker的特点

Docker对比传统虚拟机:

特性 Docker 虚拟机
启动 秒级 分钟级
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

3.初次使用 hello world

首先我们需要有一台Linux的云服务器,然后远程连接上这台服务器。
连接之后,输入以下的指令进行配置:

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}

4.安装一个nginx

在这里,我们输入命令行的地方,也就是当前所在位置一直都是当前服务器的根目录,如果我们想访问docker的内部,其实docker也就相当于当前linux里面的一个小的linux,一个小的虚拟机

5.安装一个mysql

创建一个在3306端口的容器名称为mysql的Mysql容器,并在后台持续运行
docker run -itd --name mysql -p -d 3306:3306 -e MYSQL_ROOT_PRD=123456 mysql
指令解析:
docker run 命令来创建
itd交互式终端后台运行
name指定容器名称
p指定映射端口
最后Mysql比较特殊,需要指定MYSQL_ROOT_PASSWORD变量
如果安装成功了,则可以通过数据库的可视化工具如navicat,连接这个mysql

6.DockerFile定制镜像

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是Dockerfile。
需求实现:根据刚才我们拉取的nginx镜像,我们通过Dockerfile,添加一个非常简单的网页,实现定制镜像

7.定制NodeJS镜像

首先还是连接远程服务器,然后cd source/docker,此时ls,当前只有刚才建立的nginx文件夹,我们建立一个新的文件夹,mkdir node

const Koa = require('koa')
const app = new Koa()
app.use(ctx =>{
    ctx.body = 'Hello NodeJS !!!'
})
app.listen(3000, () => {
    console.log('app started at 3000')
})

8.定制PM2

node运行的时候一般都会使用pm2,首先还是连接远程服务器,然后cd source/docker,pm2是基于node的,所以我们将刚才做的node文件夹拷贝一份,并命名成pm2,cp -R node pm2,,然后cd pm2进入到pm2文件夹

apps:
- script : app.js
instances: 2
watch : true
env :
NODE_ENV: production
FROM keymetrics/pm2:latest-alpine
WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm config set registry https://registry.npm.taobao.org/ && \
npm i
EXPOSE 3000
CMD ["pm2-runtime", "start", "process.yml"]

(pm2在docker中使用命令为pm2-docker,&& 把两个命令连接成了一个命令,\代表回车)

9.初识docker-compose

如果需要启动很多个docker容器,则需要很多docer runxxxxx, docker start命令,这样操作又会十分的麻烦,docker compose可以对多个docker容器进行管理

version: '3.1'
services:
image: hello-world

docker-compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,接下来演示一下通过docker-compose快速安装mongo和mongo的客户端mongo-express,首先连接服务器,然后cd source/docker

version: '3.1'
services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
mongo-express:
image: mongo-express
restart: always
ports:
- 8000:8081
上一篇 下一篇

猜你喜欢

热点阅读