[Docker] 簡介&常用命令

1. Docker簡介

Docker 包括三個基本概念:

  • 鏡像(Image): Docker 鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。
  • 容器(Container): 鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O計中的 類 和 實例 一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。
  • 倉庫(Repository): 倉庫(Repository)類似Git的遠程倉庫,集中存放鏡像文件。
docker簡介.png

1.1 Docker安裝

基于阿里云安裝docker:https://developer.aliyun.com/article/110806

1.2 Docker 配置源

# 1. 修改配置文件 vim /etc/docker/daemon.json
{
 "registry-mirrors" : [
   "https://mirror.ccs.tencentyun.com",
   "http://registry.docker-cn.com",
   "http://docker.mirrors.ustc.edu.cn",
   "http://hub-mirror.c.163.com"
 ],
 "insecure-registries" : [
   "registry.docker-cn.com",
   "docker.mirrors.ustc.edu.cn"
 ],
 "debug" : true,
 "experimental" : true
}

# 2. 重啟docker服務
sudo systemctl daemon-reload
sudo systemctl restart docker

# 3. 查看是否修改成功
sudo docker info

2. Docker常用命令

  • 鏡像相關(guān)命令
docker images  # 查看所有的鏡像
docker search xxx # 搜索命令
docker pull xxx[:tag]  # 下載鏡像,tag表示版本號
docker rmi xxx # 刪除鏡像
  • 容器命令
docker run [可選] imageid # 啟動容器
docker run -it xxx /bin/bash  # 啟動并使用交互式方式運行
(1) -d  # 后臺運行
(2) --name # 容器命名
(3) -p 3344:80 # 暴露端口

# --- 退出容器 ---
exit # 關(guān)閉并退出容器命令
ctrl + p + q # 推出不關(guān)閉容器

# --- 查看運行的容器 ---
docker ps # 列出當前正在運行的容器
docker ps -a # 查看曾今運行過的容器

docker rm xxx # 刪除容器
docker start xxx # 啟動曾今關(guān)閉的容器
docker restart xxx # 重啟容器
docker kill xxx # 強制停止容器

 docker attach [容器ID]  # 進入容器,當前打開的終端,不會啟動新的進程;
 docker exec -it [容器ID] [command] # 在容器中執(zhí)行相關(guān)命令,進入容器開啟一個新的終端;

docker logs [容器ID] # 查看容器日志
docker top [容器ID] # 查看容器內(nèi)部的進程id
docker inspect [容器ID] # 查看docker信息

docker cp 容器id:容器路徑 主機路徑  # 從容器內(nèi)拷貝出來,推出容器進入主機執(zhí)行命令

docker stats # 查看容器cpu狀態(tài)

# --- 提交容器 ---
docker commit -a="作者" -m="xxx"  鏡像名:[鏡像版本號]
docker常用指令.png

3. Docker容器卷

# === 命令行方式 ===
docker run -it -v 主機目錄:容器目錄 鏡像名 執(zhí)行命令 

# === 數(shù)據(jù)卷 ===
docker volume ls # 查看所有的卷
docker volume inspect 卷名 # 查看卷的詳細信息

4. Dockerfile

  • 主要作用用來構(gòu)建docker鏡像;命令參數(shù)腳本。
  • 構(gòu)建步驟:
    (1)編寫dockerfile;
    (2)docker build 構(gòu)建一個鏡像;docker build -f dockerfile文件名 -t 鏡像名:tag 生成路徑
    (3)docker run 運行鏡像;
    (4)docker push 發(fā)布鏡像(Docker Hub或者阿里云);
  • dockerfile常用指令
指令 含義
FROM 構(gòu)建新鏡像,基于哪個鏡像;
MAINTAINER 鏡像維護者的姓名 + 郵箱;
RUN 構(gòu)建鏡像時運行的shell命令;
ADD 步驟:tomcat鏡像,添加tomcat壓縮包;
WORKDIR 鏡像工作目錄;
VOLUME 掛載目錄;
EPOSE 聲明容器暴露的端口;
CMD 指定容器啟動的時候需要運行的命令,只有最后一個生效,命令會被替換;
ENTRYPOINT 指定容器運行的命令;可以追加命令。
COPY 將文件拷貝到鏡像中;
ENV 構(gòu)建鏡像的時候設置環(huán)境變量;
Dockerfile常用命令.png

4.1 Dockerfile例子

例子:https://github.com/komljen/dockerfile-examples

image.png

4.2 發(fā)布鏡像

# 登錄dockerhub賬號:
docker login -u xxx -p xxx
# push鏡像
docker push 鏡像名:tag

4.3 Docker流程總結(jié)

Docker流程總結(jié).png

5. 基于docker搭建深度學習環(huán)境

  • 基于docker + nvidia-docker + tensorflow 搭建深度學習環(huán)境;

1. 安裝docker
參考:https://developer.aliyun.com/article/110806
2. 安裝nvidia-docker(需要確保安裝了Nvidia驅(qū)動)
參考:https://github.com/NVIDIA/nvidia-docker
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
3. 安裝tensorflow
參考:https://www.tensorflow.org/install/docker?hl=zh-cn
運行tensorflow鏡像:sudo docker run --gpus all -v /home/czm/Public:/home/czm/Public -it zhiming/tensorflow:tf1.12-py3.5-cuda9.0 bash

參考文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容