2.1 创建、运行及共享容器镜像

  1. 前提条件

    0.0 环境准备
    0.1 安装docker

  2. 使用busybox镜像输出Hello World(命令行输出Hello World后结束)
    docker run busybox echo "Hello World"
  3. 创建一个简单的Node.js应用
    1. 创建app.js文件
    const http = require('http');
    const os = require('os');
    
    console.log("Kubia server starting...");
    
    var handler = function(request, response) {
        console.log("Received request from " + request.connection.remoteAddress);
        response.writeHead(200);
        response.end("You've hit " + os.hostname() + "\n");
    };
    
    var www = http.createServer(handler);
    www.listen(8080);
    
    1. 为镜像创建Dockerfile(创建一个叫Dockerfile的文件,它包含了一系列构建镜像时会执行的指令,Dockerfile文件需要和app.js文件在同一目录)
    FROM node:7
    ADD app.js /app.js
    ENTRYPOINT ["node", "app.js"]
    
    1. 构建容器镜像(每一行Dockerfile指令都会产生一个新层,也可以通过运行已有镜像容器手动构建镜像,优点是Dockerfile是自动化且可重复的)
      docker build -t kubia .
    2. 列出本地存储的镜像
      docker images
    3. 运行容器镜像(–name指定容器名,-d指定在后台运行,-p 8080:8080代表本机的8080被映射到容器的8080)
      docker run --name kubia-container -p 8080:8080 -d kubia
    4. 访问应用(显示的hostname是容器的container ID),浏览器直接访问http://8.130.177.188:8080
    5. 列出所有运行中的容器(此处可以看到containerID)
      docker ps
    6. 获取更多的容器信息(假设此containerID为:2d72684645cd)
      docker inspect 2d72684645cd
    7. 在主机操作系统上查看容器内的进程
      ps aux|grep app.js
  4. 探索运行容器的内部
    1. 在已有的容器内部运行shell(-i:确保标准输入流保持开放。-t:分配一个伪终端TTY)
      docker exec -it kubia-container bash
    2. 查询当前系统所有进程(-a:显示所有进程(包括其他用户的进程)-u:用户以及其他详细信息 -x:显示没有控制终端的进程,正常只会查出来3个进程,一个node,一个bash,一个当前的ps指令)
      ps aux
    3. 容器的文件系统也是独立的(只会展示容器内的文件,包括镜像内的所有文件,再加上容器运行时创建的任何文件,如可以看到app.js在根目录)
      ls /
    4. 退出容器
      exit
  5. 停止和删除容器
    1. 停止容器(停止后可以使用docker ps -a查询到运行中和已经停止的容器)
      docker stop kubia-container
    2. 删除容器(所有内容会被删除且无法再次启动)
      docker rm kubia-container
  6. 向镜像仓库推送镜像
    1. 在hub.docker.com创建账号

    username:nuptaxin,pwd:******

    1. 使用附加标签标注镜像(使用docker images查看是否打tag成功了,kubia和nuptaxin/kubia是两个镜像,但是指向同一个id)
      docker tag kubia nuptaxin/kubia
    2. 登录你的docker账号
      docker login
    3. 向Docker Hub推送镜像
      docker push nuptaxin/kubia
    4. 在不同机器上运行镜像(推送完成后,镜像便可以给任何人使用)
      docker run --name kubia-container2 -p 8080:8080 -d nuptaxin/kubia
    5. 资源清理
      docker stop kubia-container2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值