墨塵的模型部署1--docker部署tensorflow serving基礎知識(二)

菜鳥Docker教程
阮一峯的Docker教程

Docker簡述

dockers架構

docker技術的應用確保了不同應用程序間,實現進程級別的隔離docker架構如下圖所示。
在這裏插入圖片描述

  • Docker daemon( Docker守護進程):Docker daemon是一個運行在宿主機( DOCKER-HOST)的後臺進程。
  • Client( Docker客戶端):
  • Images( Docker鏡像):Docker鏡像是一個只讀模板
  • Container(容器):容器是鏡像的可運行實例。
  • Registry:Docker Registry是一個集中存儲與分發鏡像的服務,分爲共有(dockers hub)和私有(個人創建)。

容器與虛擬機區別

容器是應用程序層的抽象,它將代碼和依賴關係打包在一起。 多個容器可以在同一臺計算機上運行,並與其他容器共享操作系統內核,每個容器都作爲用戶空間中的獨立進程運行。 容器佔用的空間少於虛擬機(容器圖像的大小通常爲幾十MB)並且幾乎立即啓動。
在這裏插入圖片描述
虛擬機(VMs)是將一臺服務器變成多臺服務器的物理硬件的抽象。 管理程序允許多臺虛擬機在單臺機器上運行。 每個VM都包含一個操作系統的完整副本,一個或多個應用程序,必需的二進制文件和佔用數十GB的庫。
在這裏插入圖片描述

安裝docker與nvidia-docker

首先參照官網安裝docker(最新版本:Docker version 19.03.8,)
How to install docker on Ubuntu 16.04
如果你打算製作或者使用涉及到cuda或者cuddn等與GPU相關的鏡像或容器,你需要安裝nvidia-docker,請按照repo裏的步驟安裝nvidia-docker:
How to install nvidia-docker on Ubuntu 16.04

問題1:

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

在這裏插入圖片描述
解決方法:

# 查看可安裝的包
apt-cache showpkg libcurl3-gnutls
# 安裝:
sudo apt-get install libcurl3-gnutls=7.47.0-1ubuntu2

安裝docker compose

後續待更新……

驗證docker 安裝是否成功,並加入開機啓動

# 驗證安裝是否成功
docker --version
docker-compose --version
# 啓動docker
systemctl start docker
# 查看docker是否已經啓動
ps -ef | grep docker
# 重啓docker
systemctl restart docker
# 加入開機啓動docker
systemctl enable docker

配置docker國內鏡像

爲了確保docker能快速加載應用程序鏡像,配置鏡像列表,指向國內的鏡像地址。
修改 /etc/docker/daemon.json 文件並添加上 registry-mirrors 鍵值。(如果該文件不存在,需要新建該文件)

[root@aiserver ~]# vi /etc/docker/daemon.json 
{

"registry-mirrors": ["https://registry.docker-cn.com"]

}

設置docker權限組

默認的docker需要sudo權限才能運行,爲了讓當前用戶可以運行docker,需要把當前用戶加到docker組裏:

sudo groupadd docker
# 確認環境遍歷$USER是否正確,如果不對需要設置正確或者執行下面的命令時把$USER替換成當前的用戶名。
echo $USER
sudo usermod -aG docker $USER

一、鏡像操作

1.1.查看本地鏡像

列出已經下載的鏡像

docker images

1.2.搜索鏡像

在Docker Hub(或阿里鏡像)倉庫中搜索關鍵字(如mysql)的鏡像

docker search mysql

1.3.下載鏡像

在docker 官網搜索需要下載的鏡像及版本號docker hub官網

docker pull mysql
docker pull tomcat:8.5-alpine

1.4.刪除鏡像

docker images
docker rmi 91dadee7afee

1.5.構建鏡像

docker build

二、容器操作

2.1.查看正在運行的容器

# 查看幫助信息
docker COMMAND -help
# 查看運行中容器
docker ps
# 查看所有容器包括沒有啓動的
docker ps -a

2.2.啓動容器

普通啓動:

docker run --name myTomcat -d tomcat:8.5-alpine

返回值是容器的ID

b3d1907c8c3d085ed3556ca89824d67e2459f6990a00cd78794e9f864d258500
  • –name:自定義容器名,不指定時,docker 會自動生成一個名稱
  • -d:表示後臺運行容器
  • image-name:指定運行的鏡像名稱以及 Tag

端口映射啓動:

docker run --name myTomcat -d -p 8090:8080 tomcat:8.5-alpine

使用命令:docker run --name container-name:tag -d -p 服務器端口:Docker 端口 image-name:tag

  • –name:自定義容器名,不指定時,docker 會隨機自動生成一個名稱
  • -d:表示後臺運行容器,等同於-d=true, 容器將會在後臺運行,否則退出後便是exit狀態了。
  • image-name:指定運行的鏡像名稱以及 Tag
  • -p 指定服務器與 Docker 容器的端口映射,默認情況下容器中鏡像佔用的端口是 Docker 容器中的端口,且與外界是隔絕的,必須進行端口映射才能訪問。

2.3.進入容器、下載包、退出容器

容器名爲:mycentos2

# 進入容器
 docker exec -it 容器id或容器名 /bin/bash
# 查看容器裏面的進程
 docker top 容器id
# 下載config命令插件
sudo apt-get install -y net-tools 
# 退出容器
exit
  • -it:進行交互式操作
  • /bin/bash:

2.4.容器常用操作

容器名:myTomcat

# 查看安裝docker安裝信息
docker info
# 停止容器
docker stop 容器id
# 強制停止容器
docker kill 容器id
# 啓動已經停止的容器
docker start 容器id
# 刪除已經停止的容器
docker rm 容器id
# 刪除正在運行的容器
docker rm -f 容器id
# 查看日誌
docker logs myTomcat
# 查看容器日誌
docker container logs 容器id或容器名
# 查看容器所有信息
docker inspect 容器id或者容器名
# 容器重命令
docker rename [original name]  [new name]

將本地文件上傳到容器

docker cp [local file path]  [container id]:[container file path]

掛在本地目錄到鏡像

docker run -v [local folder path]:[container mounted path] --name [container name] -t -i [image ID | repository name] : TAG] /bin/bash
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章