提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Docker学习笔记
前言
本机是用的是ubuntu环境下的docker命令,是以部署UE4云渲染镜像包为目的的docker学习。
提供的视频为centos7的环境,命令会有些许不同。
B站视频学习网址
一、初始docker
1.什么是docker?
Docker是一个开源的应用容器引擎。
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux容器上;容器是完全使用沙箱机制,互相隔离的;性能开销低。
2.Docker架构
镜像(Image):相当于是一个root文件系统
容器(Container):镜像和容器的关系,就像是面对对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建,启动,停止,删除,暂停等。
仓库(Repository):仓库可以看成一个代码控制中心,用来保存镜像。
3.配置docker镜像加速器
默认情况下,从docker hub上下载docker镜像太慢,一般会配置镜像加速器。
USTC:中科大镜像加速器
阿里云,网易云,腾讯云
二、Docker命令
1.docker服务相关命令
//启动docker服务
sudo service docker start
//停止docker服务
systemctl stop docker
//重启docker服务
systemctl restart docker
//查看docker服务状态
systemctl status docker
//设置开机启动docker服务
systemctl enable docker
2.docker镜像相关命令
sudo看情况加
//查看镜像
sudo docker images
//搜索镜像
docker search 镜像名称
//拉取镜像,不写版本号默认下载最新的
docker pull redis:5.0
//删除镜像
docker rmi xxxx(Image ID)
docker rmi redis:5.0
//删除所有镜像 ``内执行的结果当作docker rmi的参数,docker images -q 查看所用镜像的id
docker rmi `docker images -q`
3.docker容器相关命令
//查看正在运行的容器
docker ps
//查看所有容器(包括已关闭的),STATUS 为Up表示正在运行,Exited表示已关闭
docker ps -a
//查看所有容器信息的ID
docker ps -aq
参数说明:
-i:保持容器运行,通常与-t同时使用,加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec进入容器。退出后,容器不会关闭。
-it创建的容器一般为交互式容器,-id创建的容器一般称为守护式容器
–name:为创建的容器命名
//创建容器 -i一直运行 -t分配一个终端输入命令 --name=名字 用什么版本 初始指令 (-i -t = -it)
docker run -i -t --name=c1 centos:7 /bin/bash
//-i 一直运行,-d后台运行,不会自动进入容器内部,需要使用命令进入容器,并且进入后退出exit也不会关闭
docker run -id --name=c2 centos:7
//进入容器
docker exec -it c2 /bin/bash
//启动容器
docker start 容器名称
//停止容器
docker stop 容器名称
//删除容器
docker rm 容器名称或容器ID
//删除所有容器,注意,不能删除正在运行的容器
docker rm `docker ps -aq`
//查看容器信息
docker inspect 容器名称
三、Docker容器的数据卷
1.数据卷的概念及作用
概念:
1)数据卷是宿主机中的一个目录或文件
2)将宿主机中的一个目录与容器中的一个目录挂载,则宿主机中的此目录就可以称为数据卷
3)当容器目录和数据卷目录绑定后,对方的修改会立即同步
4)一个数据卷可以被多个容器同时挂载
作用:
1)容器数据持久化
2)外部机器和容器间接通信
3)容器之间数据交换
2.配置数据卷
1)一个数据卷挂载一个容器
创建启动容器时,使用-v 参数 设置数据卷
docker run … -v 宿主机目录(文件):容器内目录(文件) …
注意事项:
1.目录必须是绝对路径
2.如果目录不存在,会自动创建
3.可以挂载多个数据卷
/root/data:/root/data_container 等同于 ~/data:/root/data_container
只有宿主机可以用~代替/root
docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash
cd ~ //切到根(root)目录下
ll //用来查询当前目录下文件及目录的详情
ls //进入容器后使用可以查看当前文件夹下有的文件(即不包含)
echo 内容 > a.txt //在a.txt文件中增加内容
cat a.txt //查看a.txt文件中的内容
//同时挂载多个目录,一行的末尾打上 \ 代表命令没敲完,回车后还可以继续敲
docker run -it --name=c2 \
-v ~/data2:/root/data2 \
-v ~/data3:/root/data3 \
centos:7
2)一个数据卷挂载多个容器
同一个数据卷可以挂载在两个不同的容器上,间接地实现两个容器间的通信。
docker run -it --name=c3 -v ~/data:/root/data_container centos:7 /bin/bash
docker run -it --name=c4 -v ~/data:/root/data_container centos:7 /bin/bash
3.数据卷容器
//1.创建启动c3数据卷容器,使用-v参数 设置数据卷
docker run -it --name=c3 -v /volume centos:7 /bin/bash
//2.创建启动c1,c2容器,使用--volumes-from 参数 设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash