1、docker介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
白话解释:docker可以理解成是手机中的应用市场,有了应用市场,就不用自己一个一个百度搜索软件并下载了,直接在应用市场中可以一键下载!
白话作用:docker帮助我们安装微服务开发需要的中间件,使用简单的命令控制docker安装即可,不需要自己手动安装!
2、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仓库
在新主机上首次安装Docker Engine-Community之前,需设置Docker仓库。之后您可以从仓库安装和更新Docker安装所需要的软件包。yum-utils提供了yum-config-manager,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm-2。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
3、配置yum阿里镜像
# 设置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
docker-ce为社区免费版本,稍等片刻,docker即可安装成功。
yum install -y docker-ce
5、启动docker
- a.关闭防火墙
- docker涉及端口映射,建议先关闭防火墙,避免端口屏蔽!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
- b.启动和停止docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v
6、配置docker阿里镜像
更新docker对应的仓库,为阿里镜像,提升下载速度!
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://as08lme3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、docker基本概念
- 镜像(Image):Docker镜像(Image),就相当于一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统
(软件安装包)
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
(安装包安装以后的运行程序)
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
(存放安装包的仓库)
- http://hub.docker.com:查看镜像。我们的目标就是从仓库中拉取镜像,启动运行成容器,即可!
4、docker镜像基本命令
基本命令:
基本练习:
1、拉取nginx镜像
输入:http://hub.docker.com
搜索:nginx
docker pull nginx //默认 最新 latest
docker pull nginx:版本号
docker images 查看版本
2、镜像备份和加载
使用save和load进行镜像本地备份和镜像加载!
docker save 镜像名 -o /输出的位置
docker load -i /输入的镜像文件
5、docker容器相关命令
基本命令:
基本练习:
运行nginx容器,并进行访问:
docker run --name containerName -p 80:80 -d nginx
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称,例如nginx
6、docker数据卷
直接操作数据
- 步骤一:进入容器,修改容器执行命令
docker exec -it 容器名 bash
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令
- 步骤二:查找nginx对应存储html位置
进入nginx的HTML所在目录 /usr/share/nginx/html
cd /usr/share/nginx/html
- 步骤三:修改index.html内容
不支持vi, nginx镜像只会打包需要的标准命令
sed -i 's#Welcome to nginx#Nginx是最快的服务器!#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
总结:
- 修改容器内数据,比较繁琐
- 需要进入后,修改
- 还会有命令限制
命令数据操作
- 介绍:数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录
- 基本命令:
数据卷操作的基本语法如下:
docker volume [COMMAND]
命令如下:
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
创建容器,并关注数据卷语法
docker run \
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
docker run :就是创建并运行容器
-- name mn :给容器起个名字叫mn
-v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
-p 8080:80 :把宿主机的8080端口映射到容器内的80端口
nginx :镜像名称
- 数据卷练习
- 安装nginx容器,并且将html文件夹关联到volume上!
创建容器并挂载数据卷到容器内的HTML目录
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
进入html数据卷所在位置,并修改HTML内容
# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html
7、docker Compose安装
安装docker compose,为了后期快速进行微服务集群部署!
- 导入compose文件。注意:将文件上传到/usr/local/bin 文件夹
- 修改访问权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
- 下载自动补全命令
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose