认识Docker基础
Docker是一款开源的应用容器引擎(可以理解为一个仓库),就是一个装软件的盒子
1.部署方便
由于不同的机器有不同的操作系统,以及不同的库和组件,若将一个应用程序部署到多台机器上会需要进行大量的环境配置操作,而用docker将它们都放在一个"容器"中,在部署到另一个机器上时不需要进行繁杂的环境配置操作
2.操作简单
redis、tomcat、mysql、nginx等软件基于docker安装与传统安装相比更简单
3.移植性好
docker制作一次镜像,移植到哪里都可以运行
4.管理成本低
简单便捷,使得维护和管理都大大提高了工作效率
前提:关闭防火墙
#关闭防火墙
[root@localhost ~]$ systemctl disable firewalld
#查看一下是否关闭
[root@localhost ~]$ systemctl status firewalld
#关闭网络管理
[root@localhost ~]$ systemctl status NetworkManager
安装Docker(yum方式)
1.将虚拟机yum更新到最新
[root@localhost ~]$ yum update
2.安装需要的软件包(yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的)
[root@localhost ~]$ yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源(有中央 和 阿里的,那个好用用那个,如果失败:yum clean all 命令清理后在尝试下载)
#中央仓库
[root@localhost ~]$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#备选的方案(阿里源)推荐
[root@localhost ~]$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装docker(出现输入的都输入y)
[root@localhost ~]$ yum install -y docker-ce
5.查看docker版本,验证安装成功
[root@localhost ~]$ docker -v
6.卸载docker
[root@localhost ~]$ yum list installed | grep docker
containerd.io.x86_64 1.3.7-3.1.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.13-3.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:19.03.13-3.el7 @docker-ce-stable
#注意可能文件名不一样
[root@localhost ~]$ yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 -y
Docker架构
1.镜像(image)
可以理解为一个模板;镜像可以自己创建也可以从外部拉取
2.容器(Container)
通过镜像生成的实例;容器可以创建,启动,停止,删除,暂停等
3.仓库(Repository)
保存镜像的地方,可以搭建私人仓库存放自己的镜像
镜像加速器
从源下载出镜像速度很慢,所以我们需要一个(阿里)镜像加速器
#1. 创建docker 加速器所需目录
[root@localhost ~]$ sudo mkdir -p /etc/docker
#2. 创建核心文件 daemon.json
[root@localhost ~]$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://wpoqf7q2.mirror.aliyuncs.com"]
}
EOF
#3. docker重新加载配置文件
[root@localhost ~]$ sudo systemctl daemon-reload
#4. docker重新启动
[root@localhost ~]$ sudo systemctl restart docker
Docker服务命令
在线命令参考网页:https://www.runoob.com/docker/docker-command-manual.html
[root@localhost ~]$ systemctl start docker #启动
[root@localhost ~]$ systemctl status docker #查看状态
[root@localhost ~]$ systemctl restart docker #重启
[root@localhost ~]$ systemctl stop docker #停止
[root@localhost ~]$ sytemctl enable docker #开机自启动
[root@localhost ~]$ sytemctl disable docker #关闭开机自启动
Docker镜像命令
[root@localhost ~]$ docker images #查看本地镜像
[root@localhost ~]$ docker docker search redis #网络搜索redis
[root@localhost ~]$ docker pull redis #下载redis
[root@localhost ~]$ docker rmi redis:6.0 #带版本删除镜像
[root@localhost ~]$ docker images -q #查看所有镜像id
[root@localhost ~]$ docker rmi `docker images -q` #组合命令删除所有镜像
[root@localhost ~]$ docker tag 镜像id redis:5 #根据本地镜像创建新的镜像版本
#拉取镜像: 从Docker仓库下载镜像到本地
#镜像名称格式为: "名称:版本号", 版本号不指定则是最新的版本,
#如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。地址: https://hub.docker.com/_/redis?tab=tags
[root@localhost /]$ docker pull 镜像名称
Docker容器命令
[root@localhost ~]$ docker run --restart=always -i -t --name=c2 centos:7 /bin/bash #运行容器,并进入容器内,-i 保持一直运行,-t 给容器分配终端可以输入命令,exit后容器关闭
[root@localhost ~]$ docker ps #查看容器,但如果exit退出的是看不到的需要加 -a
[root@localhost ~]$ docker run -d --name=c2 centos:7 #不进入终端
[root@localhost ~]$ docker exec -it c2 /bin/bash #进入容器
[root@localhost ~]$ docker stop c2 #停止容器
[root@localhost ~]$ docker start c2 #运行容器
[root@localhost ~]$ docker rm c2 #运行的容器无法删除,需要先停止容器
[root@localhost ~]$ docker inspect c2 #查看容器信息
Docker私有仓库
1.搭建
# 1、拉取私有仓库镜像
[root@localhost ~]$ docker pull registry
# 2、启动私有仓库容器
[root@localhost ~]$ docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json
[root@localhost ~]$ vim /etc/docker/daemon.json
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip
{"insecure-registries":["私有仓库服务器ip:5000"]}
# 5、重启docker 服务
[root@localhost ~]$ systemctl restart docker
[root@localhost ~]$ docker start registry
2.将镜像上传至私有仓库
# 1、标记镜像为私有仓库的镜像
[root@localhost ~]$ docker tag centos:7 私有仓库服务器IP:5000/centos:7
# 2、上传标记的镜像
[root@localhost ~]$ docker push 私有仓库服务器IP:5000/centos:7
3.从私有仓库拉取镜像
#拉取镜像
[root@localhost ~]$ docker pull 私有仓库服务器ip:5000/centos:7
Dock数据卷(了解)
当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的,Docker将应用与运行环境打包成容器发布,我们希望在运行过程中产生的部分数据是可以持久化的,而且容器之间我们希望能够实现数据共享。
通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。
配置数据卷
[root@localhost ~]$ docker run –it --name=c3 –v 宿主机目录:容器内的目录 centos:7 /bin/bash
[root@localhost ~]$ docker run –it --name=c1 –v /root/data:/data centos:7 /bin/bash
[root@localhost ~]$ docker run –it --name=c2 –v /root/data:/data centos:7 /bin/bash
1.一个容器可以挂载一个或者多个数据卷(目录)
2.多个容器可以挂载到同一个数据卷
!!!注意!!!:目录一定要绝对路径
数据卷容器
1.创建启动c3数据卷容器,使用 –v 参数 设置数据卷
[root@localhost ~]$ docker run –it --name=c3 –v /volume centos:7 /bin/bash
2.创建启动 c1 c2 容器,使用–-volumes-from 参数 设置数据卷
[root@localhost ~]$ docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
[root@localhost ~]$ docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash