docker
什么是docker?
docker是一款容器引擎,可以一键安装软件和环境配置
docker的优势
1.可移植性:docker容器在任何支持docker的环境中运行
2.可伸缩性:docker可以根据负载的变化进行快速扩展和收缩
3.隔离性:docker容器提供了隔离的运行环境,不同容器中运行的应用程序互相隔离,避免了容器之间的干扰。
docker和虚拟机的区别
docker的架构
docker的安装和卸载
- 检查系统版本,确定是CentOS7.x及其以上版本,老版本Docker很多补丁不支持更新
cat /etc/redhat-release
- 检查环境,安装gcc和g++
yum -y install gcc
yum -y install gcc-c++
- 安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加软件源信息(设置镜像地址)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引并安装Docker-CE
yum makecache fast
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker服务相关的命令
点击查看代码
# 查看docker服务的运行状态
systemctl status docker
# 启动docker服务
systemctl start docker
# 关闭docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
配置镜像加速器
- 创建文件daemon.json
vim /etc/docker/daemon.json
- 文件中添加如下内容
{
"registry-mirrors":["https://registry.dockermirror.com"]
}
- 更多的国内镜像网站
点击查看代码
0.优先选用★
https://registry.dockermirror.com
1.Docker中国区官方镜像
https://registry.docker-cn.com
2.网易
http://hub-mirror.c.163.com
3.中国科技大学
https://docker.mirrors.ustc.edu.cn
docker镜像操作
# 命令:
docker pull
# 格式: tag表示的镜像的标签,也可以理解为就是镜像的版本
docker pull 镜像名称[:tag]
# 示例1: 默认拉取的是最新的redis镜像
docker pull redis
# 示例2: 拉取redis7.0.10镜像,一个镜像到底存在哪些标签,需要上docker hub中进行查看
docker pull redis:7.0.10
查看本地的镜像
docker images
单词的意思
1、repository: 镜像来源仓库名称
2、tag: 镜像标签
3、image id: 镜像id
4、created: 创建时间
5、size: 镜像的大小
删除本地的镜像(-f强制删除)
docker rmi -f 镜像名:版本号/镜像ID
docker容器的操作
查询容器
docker ps (-a) # ps表示查询正在运行的容器,加上-a表示显示所有的容器
docker ps -q # 表示查询容器的id
创建容器
两种创建的方法一种是交互性容器(创建的时候展示命令窗口),一种叫守护型容器(创建的时候基于后台运行)
#交互性容器
docker run -it --name=容器的名字 镜像的名字:版本号 /bin/bash
#守护型容器
docker run -di --name=容器的名字 镜像的名字:版本号 (守护型不需要/bin/bash)
-i: 表示运行容器
-d:创建容器后不会自动登录容器
-t: 表示容器运行后会进入命令行
--name :为创建的容器命名
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口
交互性容器第一次退出,会完全退出,不会在后台运行,进入交互性容器后exit退出(没有容器会拉去容器)
但要是有这个容器,再次使用start命令进入容器,用exit退出后,交互性容器会在后台运行
容器服务管理
docker stop 容器名称/容器id # 关闭容器
docker start 容器名称/容器id # 启动容器
docker restart 容器名称/容器id # 重启容器
删除容器
命令: docker rm
格式:docker rm 容器名称/容器的id # 删除容器
示例:docker rm mycentos10 # 删除mycentos10容器
#注意:上述的命令只能删除已经关闭的容器,如果想删除正在运行的容器,可以通过添加 **-f 参数**进行实现。
删除所有容器
docker rm $(docker ps -aq)
进入容器
命令:docker exec
格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
常见的参数选项:
-t, --tty # 分配一个虚拟终端,通常和-i参数一起使用
-i,--interactive # 把交互界面一直保留,通常和-t参数一起使用
示例1:docker exec -it mycentos10 /bin/bash # 进入到容器中同时打开一个shell窗口
其他命令
docker logs -f 容器名称/容器的id # 查询容器内进程日志,-f参数表示实时监控日志信息
docker inspect 容器名称/容器的id # 查看容器的详情信息
docker cp # 完成容器和宿主机之间的文件copy
示例1: docker logs -f redis01 # 实时查看redis01这个容器中的日志信息
示例2: docker inspect redis01 # 查看容器的详情信息,主要就是:目录映射情况、端口映射情况、ip地址
示例3: docker cp a.txt redis01:/root # 把宿主机中a.txt文件拷贝到redis01的root目录中
示例4: docker cp redis01:/root/a.txt . # 把容器中的root目录下的a.txt文件拷贝到宿主机中当前目录中
备份迁移
对某一个容器修改完毕以后,我们可以把最新的容器部署到其他的环境中。
docker commit 容器名称/容器的id 镜像名称 # 把docker容器保存成一个镜像
docker save -o 镜像tar文件名称 镜像名称/镜像id # 把镜像保存为tar文件
docker load -i 镜像名称 # 把tar文件恢复成为一个镜像
docker数据卷操作
数据卷是什么?
是docker提供的一个虚拟目录,这个虚拟目录会对应宿主机上的一个真实目录,在创建容器的时候可以将这个数据卷挂载(绑定)到容器中的某一个目录下,那么此时在该目录下所产生的数据就会存储到宿主机的目录下,实现了容器和宿主机之间的文件共享
数据卷常见的命令
1.查看数据卷
docker volume ls
2.创建数据卷
docker volume create 数据卷名称
3.查询数据卷详情
docker volume inspect 数据卷名称
4.删除数据卷
docker volume rm 数据卷名称 # 删除指定的数据卷
5.数据卷的挂载
格式: -v 数据卷名称:容器目录
示例:docker run -d --name=redis02 -p 6380:6379 -v redis-data:/data redis:7.0.10
注意事项:
-
如果数据卷没有提前创建好,那么在创建容器的时候会自动创建对应的数据卷
-
数据卷挂载的时候数据卷名称前面没有/
-
容器目录不存在会自动创建
-
数据卷目录如果不为空,此时会使用数据卷目录内容覆盖容器目录内容
-
数据卷目录如果为空,容器目录不为空,此时就会使用容器目录内容覆盖数据卷目录
6.目录挂载
格式: -v 宿主机目录:容器目录
示例:docker run -d --name redis03 -p 6381:6379 -v /redis-data:/data redis:7.0.10
注意事项:
-
如果宿主机目录没有提前创建好,那么在创建容器的时候会自动创建对应的宿主机目录
-
宿主机目录挂载的时候宿主机目录名称前面有/
-
容器目录不存在会自动创建
-
宿主机目录如果不为空,此时会使用宿主机目录内容覆盖容器目录内容
-
宿主机目录如果为空,容器目录不为空,此时就会使用容器目录内容清空掉
SpringBoot项目部署
把一个Spring Boot项目使用docker进行部署,以减少整个项目的维护成本
dockerfile
dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来指定我们构建镜像的细节,后期就可以使用这个dockerfile文件来构建自己的镜像。
dockerfile文件内容一般分为4部分:
1、基础镜像信息(必选)
2、维护者信息(可选)
3、镜像操作指令(可选)
4、容器启动时执行的指令(可选)
常用命令
指令 | 用法 | 作用 |
---|---|---|
FROM | FROM image_name:tag | 指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。 |
MAINTAINER | MAINTAINER user_name | 描述镜像的创建者,名称和邮箱 |
RUN | RUN "command" "param1" "param2" | 用来执行一些命令,可以写多条 |
ENV | ENV key value | 设置容器的环境变量,可以写多条。 |
ADD | ADD source_dir/file | 将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压 |
ENTRYPOINT | ENTRYPOINT "command" "param1" "param2" | 用来指定容器启动时所执行的命令 |