zoukankan      html  css  js  c++  java
  • Docker打包程序镜像

    简介

    做了一个视频检测程序,它是由golang和c++编写的。因为公司要做私有化部署,因此需要打包成镜像然后放到公司的registry镜像仓库里。之前一直没有去熟悉docker,现在刚好机会来了,咱就要好好把握。

    安装docker

    • 声明:我目前使用的是Ubuntu 16.04的版本
    • 下载安装:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun。如果下载不了提示库缺失xxx,需要注意的是你的包管理工具,打开/etc/apt/source.list,替换文件中的源:
         deb-src http://mirrors.aliyun.com/debian wheezy main contrib non-free
         deb http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
         deb-src http://mirrors.aliyun.com/debian wheezy-updates main contrib non-free
         deb http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free
         deb-src http://mirrors.aliyun.com/debian-security wheezy/updates main contrib non-free```
      

    然后再使用apt-get update,接着重新下载安装docker就可以了。

    • docker //测试是否安装成功

    Dockerfile使用的一条龙

    • 准备:我们尽量保证在一个干净的目录下工作,因为docker有个上下文的概念,mkdir test创建一个新的工作目录,然后把程序放到该目录。
    • 编写Dockerfile,vim Dockerfile,内容如下:
         # 我的程序包名是millipedes,3rdparty和data是程序所需模型和数据,9190是我的程序端口
         FROM ubuntu:16.04
         COPY ./millipedes /opt/Millipedes/
         COPY ./data /opt/Millipedes/data/
         COPY ./3rdparty /opt/Millipedes/3rdparty/
         ENV LD_LIBRARY_PATH /opt/Millipedes/3rdparty/opencb/lib:/opt/Millipedes/3rdparty/matrix/lib:/opt/Millipedes/ffmpeg/lib
         EXPOSE 9190
         CMD ["/opt/Millipedes/millipedes"]```
      
    • 执行docker build -t app .进行构建镜像。其中"."表示上下文目录及该目录,这与相对目录和绝对目录不同。
    • 执行docker images可以看到已经打包好的镜像。
    • 尝试启动我们打包好的镜像docker run -it -p 9190:9190 app /bin/bash
    • 退出镜像exit
    • 登陆docker login registry.qmemo.com,之后输入用户名和密码。
    • 执行docker tag app:latest registry.qmemo.com/millipedes/app:v1修改tag和名称。
    • 执行docker push registry.qmemo.com/millipedes/app:v1推到公司registry仓库。

    docker的命令

    首先我们要知道,docker打包出来的镜像有个容器,我们运行这个镜像就会进入这个镜像容器,所以镜像和容器是分开的,那么我们每次要删除一个镜像就要先删除停止里面的容器。

    • exit退出容器(镜像也会停止)
    • docker stop xxxx停止容器xxxx
    • docker start xxxx重启容器xxxx
    • docker rmi app删除app镜像
    • docker rm -f <容器id>删除容器
    • docker build -t app .构建镜像,-t指定要创建的镜像名,.表示Dockerfile文件所在的目录
    • docker images查看所以的镜像
    • docker ps -a查看所有的容器
    • docker ps查看运行中的容器
    • docker run -it app /bin/bash启动进入容器
    • docker stop <容器id>停止容器
    • docker restart <容器id>重启容器
    • docker exec -it <镜像id> /bin/bash使用exec进入容器,exit退出的时候不会停止容器停止
    • docker attach <容器id>进入容器

    结尾

    目前总理了这些关于docker镜像的操作,后续会继续更新

  • 相关阅读:
    Hibernate系列教材 (十六)- 各类概念
    Hibernate系列教材 (十五)- 各类概念
    Hibernate系列教材 (十四)- 各类概念
    Hibernate系列教材 (十三)- 各类概念
    Hibernate系列教材 (十二)- 关系
    Hibernate系列教材 (十一)- 关系
    Hibernate系列教材 (十)- 关系
    codeforces1509 C. The Sports Festival (区间DP)
    洛谷P3194 [HNOI2008]水平可见直线(计算几何+单调栈)
    CF1265E Beautiful Mirrors (概率dp)
  • 原文地址:https://www.cnblogs.com/wangrui38/p/14085405.html
Copyright © 2011-2022 走看看