Docker入门

Docker入门

docker

VM虚拟机 VS Docker

VMDocker
在一种操作系统里面运行另一种操作系统不是模拟一个完整的操作系统,而是对进程进行隔离。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口
资源占用多资源占用少
冗余步骤多体积小
启动慢启动快

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样

Docker的用途

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

Docker的安装

安装完成后,运行以下命令,验证是否安装成功

$ docker version

Docker-image文件(先启动Docker)

**Docker 把应用程序及其依赖,打包在 image 文件里面。**只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

// 列出本机的所有 image 文件
$ docker image ls

// 删除 image 文件
$ docker image rm [imageName]

为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作

Docker 的官方仓库 Docker Hub 最重要 最常用的 image 仓库

Hello World

  • 拉取 hello-world image 文件

    $ docker image pull library/hello-world
    或
    $ docker image pull hello-world
    
  • 查看image文件

    $ docker image ls
    
  • 运行image文件

    $ docker container run hello-world
    
  • 运行结果

    hello-world

container 文件

image 文件生成的容器实例,本身也是一个文件,称为容器文件

// 列出本机正在运行的容器
$ docker container ls

// 列出本机所有的容器 包括终止运行的容器
$ docker container ls --all

// 终止某容器运行
$ docker container kill [containerID]

// 删除某容器
$ docker container rm [conatinerID]

制作自己的Docker容器

koa-demos为例,实现用户在Docker容器中运行Koa框架

  • Clone 项目

    $ git clone https://github.com/itxing666/koa-demos.git
    $ cd koa-demos
    
  • 编写.dockerignore文件 不要打包进入 image 文件

    // 项目根目录 创建 .dockerignore
    $ touch .dockerignore
    $ vim .dockerignore
    

    写入以下内容

    .git
    node_modules
    npm-debug.log
    
  • 编写Dockerfile文件

    // 项目根目录 创建 Dockerfile
    $ touch Dockerfile
    $ vim Dockerfile
    

    写入以下内容

    FROM node:8.4
    COPY . /app
    WORKDIR /app
    RUN npm install --registry=https://registry.npm.taobao.org
    EXPOSE 3000
    
    • FROM node:8.4 8.4版本的node
    • COPY . /app 将目录下(除了.dockerignore)的所有文件,都拷贝到 image 文件的/app目录
    • WORKDIR /app 指定 接下来的工作路径为/app
    • RUN npm install 在/app目录下,运行npm install命令安装依赖,都打包进入 image 文件中
    • EXPOSE 3000 将容器 3000 端口暴露出来, 允许外部连接这个端口
  • 创建 image 文件

    $ docker image build -t koa-demo .
    或
    $ docker image build -t koa-demo:0.0.1 .
    

    -t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest

  • 查看生成的image

    $ docker image ls
    
  • 生成容器

    $ docker container run -p 8000:3000 -it koa-demo /bin/bash
    或
    $ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
    
    • -p 容器的 3000 端口映射到本机的 8000 端口

    • -it 容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器

    • koa-demo:0.0.1 image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)

    • /bin/bash 容器内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell

      koa-demo

  • 执行命令 查看结果

    root@fae881500d9a:/app# node demos/02.js
    

    执行命令后 koa框架已经运行起来,浏览器访问 http://127.0.0.1:8000/,页面如下

    koa-demo-hello

  • 终止运行

    Ctrl + c 停止 Node 进程
    Ctrl + d (或者输入 exit)退出容器
    

    $ docker container ls
    $ docker container kill [containerID]
    
  • 删除容器文件

    $ docker container ls --all
    $ docker container rm [containerID]
    

    也可以使用以下命令启动,在容器终止运行后自动删除容器文件

    $ docker container run --rm -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
    
  • 发布 image 文件

    发布前要有账号 hub.docker.com注册账号

    $ docker login
    
    // docker image tag [imageName] [username]/[repository]:[tag]
    $ docker image tag koa-demo:0.0.1 itxing/koa-demo:0.0.1
    
    // docker image push [username]/[respository]:[tag]
    $ docker image push itxing/koa-demo:0.0.1
    

    发布成功后,登录 hub.docker.com,可以看到自己发布的image文件了

    success

关注公众号: 页面仔小杨 【实战干货、原创分享】

bottom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值