1. 程式人生 > 實用技巧 >Docker打包程式映象

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映象的操作,後續會繼續更新