简介

做了一个视频检测程序,它是由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镜像的操作,后续会继续更新

Docker打包程序镜像的更多相关文章

  1. Docker Java程序镜像制作

    Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...

  2. windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库

    最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有 ...

  3. springboot 通过docker 打包编译镜像

    添加plugin <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...

  4. SpringBoot 部署 docker 打包镜像

    SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步 ...

  5. docker打包镜像,测试部署

    docker基本入门以后,(docker基本入门https://www.cnblogs.com/yangyangming/p/11470926.html)可以试试打包docker镜像与dockerfi ...

  6. docker 将正在运行的容器打包为镜像

    将容器打包成镜像 docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 OPTIONS ...

  7. Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像

    由于工作需要,在看OpenDaylight (一个SDN的开源控制器) 官方Tutorial有一个比较基础且介绍比较详细的文档(http://sdnhub.org/tutorials/opendayl ...

  8. 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败

    docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下: ...

  9. 【ASP.NET Core分布式项目实战】(五)Docker制作dotnet core控制台程序镜像

    Docker制作dotnet core控制台程序镜像 基于dotnet SDK 新建控制台程序 mkdir /home/console cd /home/console dotnet new cons ...

  10. docker:打包node+npm+pm2运行环境镜像

    最近公司有一个外包项目需要在不能连外网的情况下部署node项目到甲方公司内部.直接使用node官网的安装包可以获得node运行环境,但像pm2这种工具要离线装就会比较费劲,所以最终选择了使用docke ...

随机推荐

  1. Python爬虫爬取ECVA论文标题、作者、链接

    1 import re 2 import requests 3 from bs4 import BeautifulSoup 4 import lxml 5 import traceback 6 imp ...

  2. 进程管理与 SELinux

    进程管理与 SELinux   在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予 ...

  3. Delving into Sample Loss Curve to Embrace Noisy and Imbalanced Data

    这篇论文: 提出了prob-and-allocate训练策略,在prob阶段获得样本损失,在allocate阶段分配样本权重. 以[2]的meta-weight-net为Baseline,取名为Cur ...

  4. #特殊判断#牛客练习赛71 A 回文数

    题目 分析 首先出现奇数次的数超过1显然无解 并且只有多个0或者只有一个非0数字并且其它都是0也无解 然后由于没有前导0所以先要找到最小的非0数,先占据首尾 最后按照常规方法前一半从左到右依次递增 注 ...

  5. OpenHarmony标准系统开机时长优化

    简介 万物互联时代,产品性能至关重要,而系统启动时间是系统性能的重要组成部分,因为用户必须等待系统启动完成后才能使用设备.对于经常需要进行冷启动的汽车等设备而言,较短的启动时间至关重要(没有人喜欢在等 ...

  6. Linux程序崩溃自启动方法

    linux进程挂掉后,可以通过配置 systemd 来自动启动服务 1.创建 systemd 服务文件,例如:huyang.service,需要放置在系统文件夹 /etc/systemd/system ...

  7. 鸿蒙开发套件之DevEco Profiler助您轻松分析应用性能问题

     作者:shizhengtao,华为性能调优工具专家 应用的性能优化一直以来都是开发者所面临的一大难题,在2023HDC大会上全新亮相的HarmonyOS NEXT开发者预览版,其中鸿蒙开发套件Dev ...

  8. Kryo反序列化链分析

    前言 Kryo是一个快速序列化/反序列化工具,依赖于字节码生成机制(底层使用了ASM库),因此在序列化速度上有一定的优势,但正因如此,其使用也只能限制在基于JVM的语言上. Kryo序列化出的结果,是 ...

  9. mysql 必知必会整理—全球化与本地化[十六]

    前言 简单介绍一下字符集. 数据库表被用来存储和检索数据.不同的语言和字符集需要以不同的方式存储和检索. 因此,MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法. 字 ...

  10. 重新整理 mysql 基础篇————— 索引模型[五]

    前言 简单整理一下索引模型. 正文 对我们开发人员来说,索引感觉非常的重要. 因为索引好用,但是不能多建,因为这影响插入,不能少建,因为这影响读取. 有些为了能够多建索引,通过从多个从库中读取数据,再 ...