简介

做了一个视频检测程序,它是由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教程》阅读随笔---python禅学(Zen_of_python)

    Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Comp ...

  2. el-table边框颜色修改—骨灰级

    一.前言说明 1. 网上很多都是通过上下左右边框方式,如: .el-table { border-bottom: 1px solid black; border-right: 1px solid bl ...

  3. 深入了解 Spring Boot 核心特性、注解和 Bean 作用域

    Spring Boot 是什么? Spring Boot 是基于 Spring Framework 构建应用程序的框架,Spring Framework 是一个广泛使用的用于构建基于 Java 的企业 ...

  4. Python 元组完全指南2

    更新元组 更改元组的值 元组是不可更改的,但有一种变通方法.您可以将元组转换为列表,更改列表,然后将列表转换回元组. 示例: x = ("apple", "banana& ...

  5. Discovery直播 | 移动应用“通行证”——钥匙环,解锁管家式安全出行服务

    用户在登录环节的直接诉求是:别让我等.别让我想.别让我烦.而帐号输入.繁琐验证,以及由此带来的安全风险,总会让很多人望而却步. 如何在简化登录流程的同时保障登录凭证安全?如何帮助用户一键免密登录同一开 ...

  6. Python-docx插入图片报错“NameError: name 'Inches' is not defined”

    在使用 Python-docx 库操作Word文档时,需要插入图片,在设置宽高时,报错"NameError: name 'Inches' is not defined" 原因是:没 ...

  7. spring boot 学习前提

    前言 总结spring boot的学习前提. 正文 1.spring 程度(可以基本使用,我在学习spring boot的时候,感觉到需要一些spring的基础) 2.maven (这个是包管理,一定 ...

  8. 重新点亮linux 命令树————目录相关[三]

    前言 简单介绍一些目录命令 正文 主要介绍三个命令 cd 路径切换 cd 这个命令用于切换当前目录的. 切换有三种形式. 以/开头的是绝对路径,比如/home. 以.开头的是相对路径,比如说./ser ...

  9. Android、iOS、jenkins全自动化打包

    主要流程思路[粗略讲处理思路,若遇到具体问题可留言交流]: 1.android的打包命令 2.ios的打包命令 3.jenkins的参数化构建 4.七牛的上传命令等 5.处理ipa的下载操作及ipa过 ...

  10. CentOS+Django+uWSGI+Celery+Supervisor配置

    目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...