title: docker部署以及基本镜像管理
image:images\theme\docker.jpg
容器在本质上是一个进程,拥有自己的IP地址 系统文件 主机名 进程管理
程序:shell、软件、命令
进程:正在运行的程序
命令执行结束时 进程被关闭 释放内存资源
容器和虚拟机的区别:
虚拟机:1、模拟计算机硬件 启动时正常走启动流程;2、虚拟机有自己的内核;3、需要走开机启动流程,有自己的内核
容器:1、不需要模拟计算机硬件;2、共用宿主的内核;3、不需要走开机启动流程,共用宿主机内核
容器的优势:启动快(直接启动第一个进程 不走开机启动流程)、性能高(共用宿主机内核)、损耗少(不需要模拟计算机硬件 不损耗硬件性能)、轻量级(消耗少)
使用容器替代虚拟机最终目的:最终目的是降低成本
100台虚拟机 需要在10台宿主机上跑
100台容器 需要跑在6台宿主机上 省4台宿主机的管理费用
补充说明:
开机启动流程:按下电源按钮,BIOS开机自检,根据BIOS的启动项选择设备来启动,选择硬盘启动,引导程序,选择操作系统,加载内核,启动第一个进程,第一个进程再启动其他进程,操作系统启动完成
BIOS启动项的顺序:从上到下
引导程序两种:引导程序放在磁盘的第一个扇区
grub
uefi:支持图形界面
docker发展历史:
2008年 dotcloud paas
2013年要黄了 CEO决定开源,绝地逢生
传统docker 1.1-1.13
docker ce 社区办 17.03 17.06 17.19 17.12 18.03 18.06 18.09 19.03
docker ee 企业版 17
传统docker和docker ce不兼容 所以在安装docker ce之前要检查一下环境中有没有传统docker
安装docker
安装前检查环境中是否已经安装传统docker,以免不兼容问题
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 下载docker源
sed -i s+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo 修改为国内地址
yum install docker-ce -y
systemctl enable docker
systemctl start docker
docker version 测试检查
docker 是使用golang语言开发
docker是一个CS架构:主要镜像 容器 仓库 网络 存储 监控
docker 是一个软件的打包技术
docker容器 安装好mysql5.7 打包成镜像 发不到docker仓库
用户:下载docker镜像 mysql5.7,启动容器 启动mysql5.7
类似功能:kvm也可以做到 在虚拟机中安装mysql5.7 然后导出kvm的磁盘文件,生成虚拟机配置文件 导入启动虚拟机
pull镜像并运行容器
docker run -d -p 80:80 nginx:latest
run 创建并启动一个容器
-d 放后台启动
-p 端口映射
nginx:latest docker镜像名称
搜索镜像(仓库地址在国外)
docker search httpd
配置docker镜像加速
1、docker镜像加速(新建json文件)
[root@docker01 yum.repos.d]# cat /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ] }
2、重启docker
systemctl restart docker
3、测试
docker search httpd
解释:
[root@docker01 yum.repos.d]# docker search httpd
NAME 镜像名字 DESCRIPTION STARS OFFICIAL AUTOMATED
用户名 镜像名字 描述
使用镜像时的原则:优先用官方的 星数多的
下载镜像:不指定版本 默认下载最新版(Using default tag: latest)
docker image pull httpd
登录官方网站 查看镜像的版本
https://hub.docker.com/
如果pull的版本不存在会报错:
Error response from daemon: manifest for httpd:2.4.42 not found: manifest unknown: manifest unknown
docker pull 下载镜像
docker push 推送镜像
查看 已有镜像
[root@docker01 yum.repos.d]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 9beeba249f3e 10 days ago 127MB httpd 2.4.43 d4e60c8eb27a 10 days ago 166MB httpd latest d4e60c8eb27a 10 days ago 166MB
导出镜像
[root@docker01 yum.repos.d]# docker image save nginx:latest -o docker_nginx.tar.gz
[root@docker01 yum.repos.d]# ll
total 127572
-rw-r--r-- 1 root root 2523 May 26 10:23 CentOS-Base.repo
-rw-r--r-- 1 root root 2880 May 26 10:24 docker-ce.repo
-rw------- 1 root root 130625536 May 26 11:21docker_nginx.tar.gz`
drwxr-xr-x. 2 root root 187 May 26 10:23 test
[root@docker01 yum.repos.d]#
镜像是把一堆文件打成的压缩包 可以解压
导入镜像
[root@docker02 ~]# docker image load -i docker_nginx.tar.gz
docker pull拉取到本地的镜像 存放在本地路径:
/var/lib/docker/overlay2/
删除镜像
docker image rm b7b28af77ffe id方式 docker image rm alpine:latest 名字方式
查看镜像列表
[root@docker01 ~]# docker images
docker镜像名字 类似linux硬连接
docker镜像id 类似linuxinode
镜像在容器使用时 不能删除
docker命令都进行了分组
docker image 镜像命令
docker container 容器命令
docker volume 卷命令
docker network 网络命令
[root@docker01 ~]# docker image
build 构建镜像
import 导入镜像 不会导入镜像的名称和版本 不推荐
load 导入镜像 会导入镜像的名称和版本
prune 清理无效镜像
push 推送
save 导出
history 构建镜像的历史命令
inspect 镜像属性
ls 查看镜像
pull 拉取
rm 删除镜像
tag 打标签
镜像打标签
docker image tag a7fc88580f30 test:v1
查看镜像属性
docker image inspect a7fc88580f30
批量操作
批量导入镜像
for n in ls *.tar.gz;do docker image load -i $n ; done
将多个镜像打成一个包
docker image save nginx:latest centos httpd -o test.tar.gz