Docker
- 本人是基于CentOS7的虚拟机学习Docker操作,之前部署网站时用过
下载
docker的下载有官方的文档
- 卸载旧版
首先如果系统中已经存在旧的Docker,则先卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
docker-selinux
- 配置Docker的yum库
首先要安装一个yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
更新yum,建立缓存
sudo yum makecache fast
3.安装Docker
最后,执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
- 设置开机自启

这样未报错就是安装完成了
让后需要配置镜像源, 因为CentOS7最近都不再支持了,所以我加了许多的镜像源,有的镜像源不能使用
# 进入镜像源配置文件
sudo vi /etc/docker/daemon.json
在里面按 i 进行写入
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}
让后按 Esc . 按 : 再按 wq 保存退出。
部署软件
部署mysql
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
账号是root 密码123

这样就启动了,mysql,可以用图形化工具尝试链接,虚拟机的mysql


镜像
镜像包含应用和运行所需要的环境,配置,系统函数库 .
镜像只需要拉取一次,但是端口只有一个,可以用别的端口映射到3360等端口
提供最小化的环境 vi 文本编辑都没有
容器
Docker运行镜像会创建隔离的环境(容器)
镜像仓库
命令
运行命令
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
- docker run 运行
- -d 后台运行
- --name 容器名字(需要唯一)
- -p 端口映射 宿主机端口 : 容器端口(应用需要的端口)
- -e 环境变量( 需要查看软件镜像的说明)
- 最后一行 镜像名字 : MySQL(镜像名字) : 5.7 (版本) / Nginx : 1.0.0
常见命令
- docker pull 拉取镜像
- docker images 查看镜像
- docker rmi 删除镜像
- docker save 打包文件
- docker load 解压文件
- docker push 推送镜像 到镜像仓库
- docker stop 停止
- docker start 开启
- docker ps 查看容器状态 -a (可展示所有容器, 默认停止容器不展示)
- docker rm 删除容器(不是镜像) -f (强制删除)
- docker logs 查看日志 -f (持续输出日志)
- docker exec 进入容器内部 exit(退出) -it 新建命令行 bash指令输入

数据卷(挂载)
数据卷是一个虚拟的目录,主机目录和容器目录链接

双向绑定,宿主机上的文件会映射到容器里的文件
命令
- docker volume create 创建数据卷
- docker volume ls 查看数据卷
- docker volume rm 删除数据卷
- docker volume inspect 查看某个数据卷的详情
- docker volume prune 清除数据卷
- docker run -v(挂载数据卷) 如果不存在会自动创建数据卷

匿名卷
自动生成名字
不推荐使用
自定义镜像
层
每层都是独立的压缩包 , 合并成一个镜像
基础镜像
可以简化我们镜像的制作
启动脚本 ( 入口)
程序启动的参数
Dockerfile
Dockerfile 是一个普通的文本文件 里面集成指令描述镜像
- FROM 指定基础镜像 FROM centos : 6
- ENV 设置环境变量
- COPY 拷贝文件
- RUN 安装过程的命令 运行shell命令
- EXPOSE 容器监听端口 描述(给使用者看的)
构建
docker build -t (名称) : 版本 . <--- 目录
网络

dockerCompose
.yml 文件实现多个容器的快速部署