1. Docker简介
Docker 包括三个基本概念:
- 镜像(Image): Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
- 容器(Container): 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository): 仓库(Repository)类似Git的远程仓库,集中存放镜像文件。
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常用命令
- 镜像相关命令
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 # 关闭并退出容器命令
ctrl + p + q # 推出不关闭容器
# --- 查看运行的容器 ---
docker ps # 列出当前正在运行的容器
docker ps -a # 查看曾今运行过的容器
docker rm xxx # 删除容器
docker start xxx # 启动曾今关闭的容器
docker restart xxx # 重启容器
docker kill xxx # 强制停止容器
docker attach [容器ID] # 进入容器,当前打开的终端,不会启动新的进程;
docker exec -it [容器ID] [command] # 在容器中执行相关命令,进入容器开启一个新的终端;
docker logs [容器ID] # 查看容器日志
docker top [容器ID] # 查看容器内部的进程id
docker inspect [容器ID] # 查看docker信息
docker cp 容器id:容器路径 主机路径 # 从容器内拷贝出来,推出容器进入主机执行命令
docker stats # 查看容器cpu状态
# --- 提交容器 ---
docker commit -a="作者" -m="xxx" 镜像名:[镜像版本号]
docker常用指令.png
3. Docker容器卷
# === 命令行方式 ===
docker run -it -v 主机目录:容器目录 镜像名 执行命令
# === 数据卷 ===
docker volume ls # 查看所有的卷
docker volume inspect 卷名 # 查看卷的详细信息
4. Dockerfile
- 主要作用用来构建docker镜像;命令参数脚本。
- 构建步骤:
(1)编写dockerfile;
(2)docker build 构建一个镜像;docker build -f dockerfile文件名 -t 镜像名:tag 生成路径
(3)docker run 运行镜像;
(4)docker push 发布镜像(Docker Hub或者阿里云); - dockerfile常用指令
指令 | 含义 |
---|---|
FROM | 构建新镜像,基于哪个镜像; |
MAINTAINER | 镜像维护者的姓名 + 邮箱; |
RUN | 构建镜像时运行的shell命令; |
ADD | 步骤:tomcat镜像,添加tomcat压缩包; |
WORKDIR | 镜像工作目录; |
VOLUME | 挂载目录; |
EPOSE | 声明容器暴露的端口; |
CMD | 指定容器启动的时候需要运行的命令,只有最后一个生效,命令会被替换; |
ENTRYPOINT | 指定容器运行的命令;可以追加命令。 |
COPY | 将文件拷贝到镜像中; |
ENV | 构建镜像的时候设置环境变量; |
4.1 Dockerfile例子
例子:https://github.com/komljen/dockerfile-examples
4.2 发布镜像
- DockerHub发布镜像流程:
(1)注册dockerhub账号;https://www.docker.com/products/docker-hub
(2)在服务器上提交自己的镜像;
# 登录dockerhub账号:
docker login -u xxx -p xxx
# push镜像
docker push 镜像名:tag
4.3 Docker流程总结
Docker流程总结.png5. 基于docker搭建深度学习环境
- 基于docker + nvidia-docker + tensorflow 搭建深度学习环境;
1. 安装docker
参考:https://developer.aliyun.com/article/110806
2. 安装nvidia-docker(需要确保安装了Nvidia驱动)
参考: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
参考文档
- 狂神说Java】Docker最新超详细版教程通俗易懂 https://www.bilibili.com/video/BV1og4y1q7M4/
- Docker官方主页:https://www.docker.com/
- Docker命令参考文档:https://docs.docker.com/engine/reference/commandline/cli/
(1)删除none镜像:https://www.jianshu.com/p/d06830de219f - Docker Hub官方网站:https://hub.docker.com/
- Docker——配置国内源 https://juejin.cn/post/6844904111582740493
网友评论