安装依赖
- yum install -y yum-utils
device-mapper-persistent-data
lvm2
设置仓库
- yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
安装docker
- yum install docker-ce docker-ce-cli containerd.io
启动
- 系统启动
systemctl start docker
systemctl enable docker - 查看是否
docker version;
docker学习
基础
简介
代码 ---------------》代码+环境打包成镜像;
基于GO语言;一次封装,到处运行;
Build,ship,run,any app,anywhere;
三大要素
- 仓库:存放镜像文件的 场所;
- 镜像:只读文档;用来创建docker容器;容器的模板;可以生成多个容器;
- 容器:镜像运行的实例;mini版的linux环境;
常用命令
帮助命令
- docker version:docker版本;
- docker info:详细信息;
- docker --help :帮助命令;
镜像命令
- docker images;本地镜像;-a:列出所有的(隐藏的);-q:显示id;–digest:摘要说明;–no-trunc :显示镜像的完整信息;
- docker search tomcat:搜索镜像;-s 30;点赞数超过30的;–no-trunc:完整说明信息;
- docker pull:下载镜像;:3.2;3.2版本;默认latest;
- docker rmi :删除镜像;:3.2;3.2版本;默认latest;-f:运行中强制删除;
多个删除;docker rmi -f $(docker images -qa)全面删除;.
容器命令
- docker run -it --name指定新名字 镜像id;创建实例;-it:进入伪终端;-p 容器端口:docker端口
ps -ef :查询所有进程; - docker ps:docker有哪些容器在运行;-l:最近的容器; -a:所有容器; -n 3;最近三次的容器;-q:只显示容器id;exit:关闭容器;ctrl+p+q:容器不关闭退出伪终端;
- docker start 容器id;
- docker kill 容器id;
- docker rm 容器id;删除
- docker run -d 容器;后台运行;
- docker logs ;查看日志;–tail 最后多少条;-t:显示时间;-f:持续更新;
- docker top 容器;容器内的进程;
- docker inspect 容器;容器内部细节;
- docker attach 容器;进入容器交互;
- docker exec -t 容器 命令 ;不进去执行命令;/bin/bash 进去;
- docker cp 容器id:路径 主机路径;将容器内的文件拷到主机内;
- docker commit :提交容器副本,成为新的镜像;-m:提交的描述信息;-a :作者;
镜像原理
打包成独立的软件;
UnionFS:联合文件系统;分层,轻量级、高性能的文件系统;支持对文件系统的修改一层层叠加;
- docker镜像由一层一层的文件系统组成;
- 镜像底层是bootfs:BootLoader,和kernel;
- 再上是rootfs:
- 比如tomcat:由kernel,centos,jdk,tomcat一层一层组成镜像;
分层的原理
共享资源;共同的base,所有容器都能运行;
容器数据卷
持久化;容器之间共享数据;
保存数据:卷;
类似redis里的abd和aof文件;
-
数据卷:直接命令添加;
DockerFile添加;
备注;直接命令添加:docker run -it -v /宿主机的绝对路径:/容器内目录 镜像名;
两个目录链接;重启后数据同步;
加权限;容器目录后加:ro(read-only)对宿主机目录只能读;
DockerFile:构建文件;
docker build -f /myDocker/dockerfile -t zzyy/centos 生成镜像; -
数据卷容器:容器间数据共享;继承父容器;docker run -it --name 名字 --volumes-from 父容器
DockerFile
- 构建docker的构建文件,有命令和参数组成;
- 大写字母,后至少跟一个参数;
- 每条指令都会创建一个新的镜像层;
执行
- 执行基础容器
- 再上一次提交的镜像运行容器;
- 继续;
dockerFile体系结构
-
from:基础镜像,当前新镜像是基于那个镜像的;
-
MAINTAINER:镜像维护者的姓名和邮箱地址;
-
Run:容器构建时需要运行的命令;install一些东西;
-
EXPOSE:当前容器对外暴露的端口;
-
WORKDIR:终端默认进来的工作目录;
-
ENV:用来构建镜像过程中设置环境变量;
-
ADD:将宿主机目录下的文件拷贝进镜像;
-
COPY:类似ADD;
-
VOLUME:容器数据卷;用于数据保存和持久化工作;
-
CMD:指定一个容器启动时要运行的命令,可以有多个,最后一个生效;CMD会被docker run 之后的参数替换掉;
-
ENTRYPOINT:和CMD命令一样;
-
ONBUILD:当创建一个被继承的容器;父容器在子容器’
build -t dockerFile文件名;