看百遍,不如自己实现一个docker容器啦

1.docker是什么

Docker 是一个开源的容器化平台,用于构建、打包和运行应用程序的工具。它通过使用容器技术,将应用程序及其依赖的软件、库和配置打包到一个独立的容器中,从而实现了应用程序的隔离和可移植性。

2.docker解决了什么问题

在不同的开发环境、测试环境和生产环境中,应用程序所依赖的软件和配置可能存在差异,导致应用在不同环境中运行时出现问题。Docker 提供了容器化的解决方案,将应用程序及其依赖的软件、库和配置打包到一个独立的容器中,确保在不同环境中运行时环境的一致性,避免了由环境差异引起的问题。

3.docker的用途

Docker 的主要用途,目前有三大类。

  1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
  3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

4.docker安装

终端安装:

  brew install --cask --appdir=/Applications docker

手动安装:
进入官网:docs.docker.com/desktop/mac…

下载完毕之后就会有这个图标:

image.png

验证docker是否正常:

  docker version

5.docker的基本概念

5.1 镜像

Docker 镜像是一个只读的模板,包含了运行应用程序所需的所有内容,如操作系统、软件、库和配置文件等。镜像可以作为容器的基础,用于创建和运行容器实例。同一个 image 文件,可以生成多个同时运行的容器实例。

  docker images       //列出所有本地镜像。
  docker pull <image>   //从Docker仓库下载一个镜像。

5.2 容器

**image 文件生成的容器实例,本身也是一个文件,称为容器文件。**也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。

  docker ps //列出本机正在运行的容器。
  docker run <image>   //创建并启动一个容器。

5.3 Dockerfile文件

如何可以生成 image 文件?这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

6.自定义docker容器

6.1 项目准备

使用koa创建一个简单的服务

  // index.js
  
  const Koa = require('koa');
  const app = new Koa();
  
  // 添加一个中间件函数
  app.use(async (ctx, next) => {
    // 设置响应内容和状态码
    ctx.body = 'Hello, Koa!';
    ctx.status = 200;
    
    // 调用下一个中间件函数
    await next();
  });
  
  // 启动服务器并监听端口
  app.listen(3000, () => {
    console.log('Koa server is listening on port 3000');
  });

6.2 编写Dockerfile 文件

在项目的根目录下,新建一个文本文件.dockerignore,.git和node_modules文件将不会被打包进image中

  .git
  node_modules

在根目录中新增Dockerfile文件(使用时记得删除备注!)

  FROM node:8.4      // 使用node 8.4镜像
  WORKDIR /koa-demo  // 设置容器内的工作目录,可以随意起名字
  
  COPY . /koa-demo   // 将本地所有文件拷贝到容器中的koa-demo文件里
  RUN npm install --registry=https://registry.npm.taobao.org   // 下载依赖
  EXPOSE 3000        // 将容器的3000端口暴露出来
  CMD node index.js  // 指定容器启动时要执行的命命令

6.3 构建镜像

在终端中执行下面命令,来生成一个镜像

  docker build -t koa-demo .
  -t参数:指定构建的镜像的名称和标签   
  . 参数:表示 Dockerfile 所在的当前目录。

等待执行完毕后使用docker images 来查看新生成的镜像

image.png

6.4 启动容器

在终端中执行下面命令,来启动容器

  docker run -d -p 3000:3000 koa-demo
  -d参数:-d 参数告诉 Docker 在后台运行容器,并返回容器的 ID。这意味着容器将在后台以守护进程的形式运行,不会阻塞终端或命令行。
  -p参数:将本机的3000端口映射到容器的3000端口
  koa-demo:代表要启动的镜像名称

当访问http://localhost:3000/正常显示Hello,Koa!时代表容器启动成功了

image.png

7.其他常用的docker命令

  镜像相关命令:
  docker image ls:列出所有本地镜像。
  docker pull <image>:从Docker仓库下载一个镜像。
  docker build -t <tag> <path>:根据Dockerfile在指定路径下构建一个镜像。
  docker push <image>:将本地镜像推送到Docker仓库。
  docker rmi <image>:删除一个本地镜像。
  
  容器相关命令:
  docker run <image>:创建并启动一个容器。
  docker start <container>:启动已经创建的容器。
  docker stop <container>:停止一个运行中的容器。
  docker restart <container>:重启一个容器。
  docker rm <container>:删除一个容器。
  docker ps:列出所有正在运行的容器。
  docker ps -a:列出所有容器(包括已停止的)。
  docker logs <container>:查看容器的日志输出。
  docker exec -it <container> <command>:在运行中的容器中执行命令。

引用:www.ruanyifeng.com/blog/2018/0…

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYz2bHXj' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片