Docker打包程式映象
阿新 • • 發佈:2020-12-04
簡介
做了一個視訊檢測程式,它是由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
docker的命令
首先我們要知道,docker打包出來的映象有個容器,我們執行這個映象就會進入這個映象容器,所以映象和容器是分開的,那麼我們每次要刪除一個映象就要先刪除停止裡面的容器。
exit
退出容器(映象也會停止)docker stop xxxx
停止容器xxxxdocker start xxxx
重啟容器xxxxdocker 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映象的操作,後續會繼續更新