文章目录
一、Docker概述
1、Docker是什么?
(1)是一种轻量级的“虚拟机”
(2)在Linux容器里运行应用的开源工具
2、Docker与虚拟机的区别
虚拟机 | 容器 | |
---|---|---|
启动时间 | 慢 | 快速 |
容量 | 大 | 小 |
系统 | 逻辑隔离 | 依赖于内核(共享) |
安全 | 强 | 弱 ( cgroup资源分配) |
3、Docker的使用场景
(1)打包应用程序简化部署
(2)可脱离底层硬件任意迁移
例:服务器从腾讯云迁移到阿里云
4、Docker的核心概念
(1)镜像
一个面向Docker容器引擎的只读模板
(2)容器
从镜像创建的运行实例
(3)仓库
集中保存镜像的地方
5、CentOS安装Docker的两种方式
(1)使用CURL获得Docker的安装脚本进行安装
(2)使用YUM仓库来安装Docker
二、Docker部署
–部署19版docker–
1、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#yum-utils 提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper是 Linux2.6内核中支持逻辑卷管理的通用设备映射机制,
它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
2、设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装Docker-CE
yum install -y docker-ce
systemctl stop firewalld.service
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
systemctl start docker.service
systemctl enable docker.service
--镜像加速--
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://tzkfdus6.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
进入阿里云-——>控制台-——>搜索容器镜像服务
--网络优化--
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker
3、获取镜像
docker version #docker版本信息
docker search nginx #查找指定镜像
docker pull nginx
下载后存放在/var/lib/docker
/var/lib/docker/image/overlay/repositories.json //下载文件信息
docker images //查看下戟镜像信息
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f6d0b4767a6c 2 months ago 133M
--上传镜像--
docker tag nginx:latest abner/nginx:web #用户名/仓库名:镜像名 //改标签
docker login //登陆
Username: docker
password:
Email: xxx@xxx.com
//上传
docker push abner/nginx:web
4、容器的操作
docker create -it nginx:latest /bin/bash #容器创建
docker ps -a #查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61e42646d12b nginx:latest "/docker-entrypoint.…" About a minute ago Created thirsty_sinoussi
docker start 61e42646d12b #启动容器
61e42646d12b
docker ps -a #查看状态为up
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61e42646d12b nginx:latest "/docker-entrypoint.…" 7 minutes ago Up 3 minutes 80/tcp thirsty_sinoussi
docker pull paigeeworld/centos7
docker create -it paigeeworld/centos7 /bin/bash
docker ps -a
docker start 22682cdae9ff
docker run centos /usr/bin/bash -c ls #执行完成直接关闭状态是Exited
docker run -d paigeeworld/centos7 /bin/bash -c "while true;do echo hello;done" #持续在后台执行
docker stop 09f866e1a922 #终止运行
#容器进入
docker ps -a(一定要是运行状态,不是就要启动)
docker exec -it 61e42646d12b /bin/bash #进入容器
exit #退出容器
docker rm 61e42646d12b #删除容器(只能删除不运行的)
docker ps-a | awk "fprintdocker rm "$1) | bash #批量删除容器
5、私有仓库
docker pull registry #先获取registry镜像
vim /etc/docker/daemon.json
{
"insecure-registries":["192.168.100.10:5000"], #添加这行
"registry-mirrors": ["https://05vz3np5.mirror.aliyuncs.com]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a
docker start 048369b04a05 #启动容器
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry #宿主机的/data/registry自动创建挂载容器中的/tmp/registry
docker tag nginx:latest 192.168.100.10:5000/nginx #更改标记为192.168.100.10:5000/nginx
docker push 192.168.100.10:5000/nginx #上传
curl -XGET http://192.168.100.10:5000/v2/_catalog #获取私有仓库列表
docker pull 192.168.100.10:5000/nginx #测试私有仓库下载
6、Docker数据卷
docker pull centos
docker run -v /var/www:/data1 --name web1 -it centos /bin/bash
cd /data1/
touch test1
返回宿主机进行查看
ls /var/www/
#数据卷容器
docker run --name web100 -v /data1 -v /data2 -it centos:7/bin/bash
docker run -it --volumes-from web100 --name db1 centos:7 /bin/bash #新容器挂载数据卷容器web100
7、端口映射
docker run -d -P nginx
docker run -d -p 49280:80 nginx
8、容器互联
docker run -itd -P --name web11 centos:7 /bin/bash#创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web22 --link web11:web11 centos:7 /bin/bash #创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1
#--link name:alias --link容器名:别名
总结
1、镜像
上传(push) / 下载(pull) /打标签(tag) /删除(rmi) /导出(save) /导入(load)
2、容器
创建(create) /进入(exec) /运行(run) /删除(rm) /导出(export) /导入(import)
3、仓库
下载registry镜像——>运行容器暴露端口5000——>修改daemon.json文件——>重启docker打标签(IP:端口/名称)——>上传/下载