一. Docker入门
1. Docker的概述
(官网) Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2. Docker三个基本概念
镜像(Image):Docker 镜像,就相当于是一个 root 文件系统。将应用程序依赖的函数库,环境,配置等文件打包在一起的静态文件包。
容器(Container):镜像是静态的定义,容器是镜像运行时的实体,是一个动起来的文件包。简单来说就是将静态文件包运行起来变成了容器。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
二. CentOS安装Docker
1. 卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
2. 安装docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
3. 更新本地镜像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
4. 下载docker
yum install -y docker-ce
5. 启动docker(如果启动失败,可能是未关闭防火墙原因)
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v # 查看docker版本
三. 其他安装
1. CentOS7安装DockerCompose
1.1 下载
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
1.2 修改文件权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
1.3 Base自动补全命令
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
# 如果这里出现错误,需要修改自己的hosts文件
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
2. Docker镜像仓库
搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。
2.1 简化版镜像仓库
# 命令中/var/lib/registry目录是私有镜像库存放数据的目录
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
2.2 带有图形化界面版本
version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=传智教育私有仓库
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
2.3 配置Docker信任地址
# 我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置
# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker
四. Docker镜像的基本操作
1. 拉取、查看镜像
1.1 首先去镜像仓库DockerHub搜索nginx镜像
1.2 拉取自己需要的镜像 DockerHub
# 拉取nginx镜像
docker pull nginx
1.3 查看拉取到的镜像
docker images
2. 保存、导入镜像
2.1 导出镜像到磁盘
# docker save -o [保存的目标文件名称] [镜像名称]
docker save -o nginx.tar nginx:latest
2.2 加载镜像
# 先删除本地的nginx镜像
docker rmi nginx:latest
# 然后运行命令,加载本地文件
docker load -i nginx.tar
3. 其他操作
3.1 查看某命令用法
# 查看docker上某命令的用法
docker [某命令] --help
3.2 关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
3.3 查看docker版本
docker -v
3.4 配置镜像加速
国内从DockerHub拉取镜像较为困难,可以配置镜像加速器解决。阿里云镜像获取地址:阿里云登录 - 欢迎登录阿里云,登陆后左侧菜单选中镜像加速器就可以看到你的专属地址。
五. Docker容器的基本操作
1. 容器保护三个状态
-
运行:进程正常运行
-
暂停:进程暂停,CPU不再运行,并不释放内存
-
停止:进程终止,回收进程占用的内存、CPU等资源
2. 容器相关命令
-
docker run: 创建并运行一个容器,处于运行状态
-
# 创建容器命令 <docker run --name containerName -p 80:80 -d nginx:latest>
-
--name : 给容器起一个名字,比如叫做mn
-
-p : 将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-
-d : 后台运行容器
-
nginx : 镜像名称,例如nginx
-
-
docker rm: 删除一个容器
-
-f : 强制删除一个容器
-
-
docker ps: 查看正在运行的容器
-
-a : 查看所有容器(运行和停止)
-
-
docker logs: 查看容器的日志信息
-
-f : 等待持续输出
-
-
docker exec :进入容器内部,执行一个命令
-
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
-
ng :要进入的容器的名称
-
bash:进入容器后执行的命令,bash是一个linux终端交互命令
-
-
docker unpause: 让一个容器从暂停状态恢复运行
-
docker stop : 停止一个运行的容器
-
docker start: 让一个停止的容器再次运行
-
docker pause: 让一个运行的容器暂停
3. 数据卷(容器数据管理)
3.1 数据卷的概述
数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。数据卷的作用是将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。
3.2 数据集操作命令
-
docker volume: 数据卷操
-
docker volume create:创建数据卷
-
docker volume ls:查看所有数据卷
-
docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
-
docker volume rm:删除指定数据卷
-
docker volume prune:删除所有未使用的数据卷
3.3 挂载数据卷
# 可以通过 -v 参数来挂载一个数据卷到某个容器内目录
docker run --name ng -p 8080:80 -v html:/root/html -d nginx
六. Dockerfile && Docker-Compose
1. Dockerfile自定义镜像概述
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像,每一个指令都会形成一层Layer,更新详细语法说明可以参考官网文档。
2. Docker-Compose的概述
基于Compose文件快速部署分布式应用,无需手动创建和运行容器! Compose文件是一个文本文件,描述每个容器如何运行,更新详细语法说明可以参考参考官网 。
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 1234
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"
3. Docker镜像仓库
镜像仓库可分为2种:远程仓库:可以理解成云仓库、公有仓库,是由某个组织、公司维护的仓库,对互联网开放,所有人共享官方的仓库;本地仓库:可以理解为公司的私有仓库,不对外开放。一般情况下只在公司内网中使用,用于加快镜像拉取速度、维护公司资产。