docker的基本组成(三要素)
- 镜像
- 容器
- 仓库
理解:镜像可以理解成一个类,容器就是用这个类new出来的对象,仓库就是放镜像文件的。docker本身是容器运行载体或管理引擎
安装
- 安装gcc
yum -y install gcc
- 安装需要的软件包
设置稳定的镜像仓库
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引,使得镜像下载快
yum makecache fast
- 安装 Docker Engine、containerd 和 Docker Compose
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动docker
systemctl start docker
- 测试
docker version
使用hello-world镜像测试docker
本地没有,他会去远程镜像库拉取一个hello-world镜像
docker run hello-world
- 停止docker
systemctl stop docker
docker的常用命令
查看docker概要信息
docker info
设置docker开机启动
systemctl enable docker
查看帮助文档
docker --help
列出本地主机上的镜像
docker images
查看远程镜像库是否有某个镜像
docker search hello-world
拉取镜像到本地
docker pull 镜像名称[:tag]
删除某个镜像
docker rmi 名字或id
docker rmi -f 名字或id
容器命令
通过docker run 启动容器有一些参数
docker run --name=容器名字
//后台运行容器并返回id
docker run -d
//启动操作容器的终端
docker run -it
//指定端口映射
docker run -p 8080:8080
罗列所有启动着的容器
docker ps
退出容器
在容器控制台输入 exit : 会停止容器
ctrl+p+q : 不会停止容器
停止容器
docker stop id或名字
强制停止
docker kill id或名字
重启容器
docker restart id或名字
删除已经停止的容器
//注意:rmi 是删除镜像
docker rm id
退出了容器,重新进入正在运行的容器交互界面
//一般用这个,输入exit不会停止容器
docker exec -it id bash
docker attach id
将容器内的文件拷贝到主机
docker cp id:容器内路径 主机路径
将容器导出成一个tar
docker export id > 文件名.tar
将tar文件导入为一个镜像
cat 文件名.tar | docker import - 镜像用户/镜像名:版本号
commit镜像(将自己的容器commit到本地镜像库)
docker commit -m="描述信息" -a="作者" 容器id 要创建的目标镜像名:版本
容器数据卷
容器运行中可能有重要的数据,为了对数据进行保护,需要进行备份。容器数据卷就是通过映射的方式将容器内的数据备份+持久化到本地主机目录上。主机上修改文件,容器内对应映射也会修改,互通的。
运行一个带有容器卷存储功能的容器
docker run -it --priviledged=true -v /主机绝对路径目录:/容器内目录 镜像
Dockerfile
Dockerfile是用来构建镜像文件的文本文件,它可以看做一个清单,docker通过这个清单构建镜像。
Dockerfile指令
- FROM
指定一个已经存在的镜像作为模版 - MAINTAINER
镜像维护者 - RUN
容器构建时需要执行的命令,是在docker build时运行 - EXPOSE
当前容器对外暴露的端口 - WORKDIR
指定容器创建后,终端默认登录进来的工作目录;这是设置RUN,CMD,ADD等指令的工作目录 - USER
默认root - ENV
用于构建镜像中设置环境变量。
如ENV MYPATH /usr/local,这个环境变量可以在后续任何RUN指令中使用 - VOLUME
容器数据卷,用于数据保存和持久化工作 - ADD
将主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包 - COPY
类似于ADD,拷贝文件和目录到镜像中 - CMD
设置容器的启动命令,指定容器启动后要干的事情,是在docker run时运行 - ENTRYPOINT
设置容器的入口程序
编写好Dockerfile文件后,构建镜像
//注意末尾有个点(.)
docker build -t 镜像名字:tag .
docker-compose 容器编排
当docker容器多了,可以用compose工具来进行管理,需要定义一个yaml配置文件,docker-compose.yaml,写好多个容器之间的调用关系,然后,只需要一个命令就能同时启动和关闭这些容器