Docker 从入门到实战,从零部署 Node + MongoDB + Redis 项目

Docker 从入门到实战,从零部署 Node + MongoDB + Redis 项目_第1张图片

看完这篇文章你能了解到什么?

  • 了解常见的 Docker 知识
  • 利用 Docker 快速跨平台部署后端( Node.js + MongoDB + Redis + Nginx ) 项目
  • 一些常见的 Linux 系统操作
  • 编写 Dockerfile 文件
  • 编写 docker-compose 文件
  • 编写 一些常见的 nginx 配置文件

PS

这里主要讲的是利用容器化的方式去部署项目,容器化部署的好处有很多哈,比如容器可以很方便从一台电脑迁移到另一台电脑。

Docker 是什么?

简单一句话就是一个应用打包、分发、部署的工具,可以把它理解为一个轻量的虚拟机,但是是以容器的方式运行的。

支持各种系统 Linux,MacOS,Windows等。可以使用容器化部署以降低项目在不同的平台之间进行部署的成本。

再也不会出现 “怎么在我的电脑能运行,到了服务器就运行不了” 这种情况。

Docker 基本概念

使用 Docker 前需要先了解这几个基本概念

  • 镜像(image)
  • 容器(container)
  • 仓库(repository)

获取镜像的方式可以通过 Dockerfile 文件创建,也可以通过 dockerHub 仓库下载

  • Docker 中镜像容器的关系就像  与 实例 的关系
  • 镜像可以通过 Dockerfile 文件来生成,容器通过镜像来创建

Docker 使用国内镜像加速

Linux 系统

vim /etc/docker/daemon.json

Windows 系统,找到 daemon.json 文件并打开修改

C:\Users<你的用户名>.docker\daemon.json 文件

然后修改里面的 registry-mirrors 字段,可以添加多个源地址。可以在下载镜像的时候加速

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

Hello world

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序

docker run ubuntu:15.10 /bin/echo "Hello world"

安装一个 ubuntu 15.10版本的容器,并在容器中输出hello world,如果本地不存在该容器就会从远程仓库下载,相当于你在 Docker 容器内安装了一个 ubuntu 系统的虚拟环境,可以在里面执行各种Linux的指令。

交互式容器

相当于可以在容器虚拟环境中打开控制台。

放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash

docker run -i -t ubuntu:15.10 /bin/bash
# 或者
docker run -it ubuntu:15.10 /bin/bash
  • -t: 在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
  • -d: 让容器在后台运行,输入后不进入交互模式
  • -p:表示暴露端口
  • 在控制台中输入exit退出

如果输入了-d 参数,会让容器后台运行,那么怎么进入到容器中呢?

一个是docker attach 容器ID命令,如果从这个命令进入到容器中后,再输入exit会把整个容器也退出,不再维持后台运行的状态。

另一个是docker exec -it 容器ID /bin/bash命令回到容器中,执行这个命令在容器中输入exit不会把整个容器也退出,容器仍将维持后台运行状态。

Docker状态

输入指令docker ps -a可以查看所有的容器。

如果要恢复一个已经停止的容器可以输入docker start 容器ID,同样的,想要停止一个容器可以输入docker stop 容器ID。

另外还有docker restart 容器ID 命令用于重启容器

容器的状态有7种:

  • created(已创建)
  • restarting(重启中)
  • running 或 Up(运行中)
  • removing(迁移中)
  • paused(暂停)
  • exited(停止)
  • dead(死亡)

删除一个容器

docker rm -f 容器ID

清理列表中所有终止状态的容器

docker container prune

查看镜像

Docker 从入门到实战,从零部署 Node + MongoDB + Redis 项目_第2张图片

删除镜像

docker rmi 镜像仓库源
# 比如说要删除上面的test v0.0.1版本
docker rmi test:v0.0.1

你可能感兴趣的:(java,后端,面试,数据库,mysql)