看百遍,不如自己实现一个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>:在运行中的容器中执行命令。

8.写在最后

如果这篇文章对你有帮助,记得点赞和收藏哦!你的支持是对我的最大鼓励和肯定。

同时,如果你有任何意见、建议或者想与我分享你的经验,欢迎在评论区留言,让我们一起互动和交流。我非常期待听到你的声音。

再次感谢你的阅读和支持!希望这篇文章能够给你带来真正的价值,帮助你解决问题或者提供新的见解。

谢谢!

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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务