●是一种轻量级的“虚拟机”;不需要装系统
●在Linux容器里运行应用的开源工具
●Docker是基于Go语言实现的云开源项目
●Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
●打包应用程序简化部署
●可脱离底层硬件任意迁移
●例:服务器从腾讯云迁移到阿里云
●docker是不安全的,因为要和虚拟机一起共享资源
●简化配置
●整合服务器
●代码流水线管理
●调试能力
●提高开发效率
●多租户
●隔离应用
●快速部署
Docker核心概念
●镜像
●容器
●仓库
CentOS安装Docker的两种方式
●使用CURL获得Docker的安装脚本进行安装
●使用YUM仓库来安装Docker
1.安装依赖包
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
yum-utils 提供了yum-config-manager
Device mapper:存储驱动程序需要device-mapper-persistent-data lvm2
Device mapper是Liunx2.6内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构
2.设置阿里云镜像资源,下载一个docker-ce
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker-ce,并启动
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker.service ##开启docker
4.配置镜像加速,用浏览器打开阿里云官网,先登录
回到虚拟机在/etc目录下配置镜像加速,并重新加载
[root@localhost docker]# systemctl daemon-reload ##重新加载系统
[root@localhost docker]# systemctl restart docker ##重启docker服务
5.配置网络优化
[root@localhost docker]# vim /etc/sysctl.conf ##开启路由功能
net.ipv4.ip_forward=1 ##底行加入
[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost docker]# service network restart ##重启网络功能
[root@localhost docker]# systemctl restart docker ##重启服务
到此docker就安装完成了
1.查看版本信息
[root@localhost docker]# docker version
docker search nginx
[root@localhost docker]# docker pull nginx
4.查看镜像列表信息
[root@localhost docker]# docker images ##查看下载镜像信息
[root@localhost overlay2]# cd /var/lib/docker/image/overlay2/
[root@localhost overlay2]# docker inspect nginx:latest ##查看nginx镜像的详细信息
5.修改镜像标签,并不是修改了原有镜像的标签而是设置了一个别名
[root@localhost overlay2]# docker tag nginx:latest nginx:web ##给nginx镜像添加新标签
6.删除镜像
删除镜像加标签:Docker rmi 镜像名称:标签
[root@localhost overlay2]# docker rmi nginx:web ##删除nginx:web标签镜像
Untagged: nginx:web
[root@localhost overlay2]# docker rmi 417af7dc28bc ##删除httpd镜像
Untagged: httpd:latest
注:这种加ID删除的方法前提是这个镜像文件必须只保留一个标签不能有多个标签;不然删除会报错
7.导出;导入镜像文件
导出镜像文件
[root@localhost overlay2]# docker save -o /opt/nginx nginx:web ##将nginx镜像文件导出到opt目录下
[root@localhost overlay2]# docker rmi nginx:web ##将原有的镜像文件删除
[root@localhost overlay2]# docker load < /opt/nginx ##将/opt目录下的nginx文件导入
1.创建容器
[root@localhost overlay2]# docker create -it nginx:web /bin/bash ##基于nginx:web镜像创建容器,
88206a23f6a716807b230484ca8ec734d3464d0baf9c53f6e931da64d13c5b03 ##创建的容器序列号
2.查看容器(所有的容器都会被显示不管有没有创建)
[root@localhost overlay2]# docker ps -a
[root@localhost overlay2]# docker start 88206a23f6a7 ##开启nginx容器
88206a23f6a7 ##nginx镜像ID号
端口为内部端口不是对外的,外部访问这个端口号是没法访问到nginx服务的
这时查看网卡信息
[root@localhost overlay2]# ifconfig
两个网卡信息有区别的
可以依靠这副图去理解:
4.启动执行命令查看系统根目录(将下载镜像;创建容器;启动容器结合)
下载一个centos7的镜像
[root@localhost overlay2]# docker pull centos:7
[root@localhost /]# docker create -it centos:7 /bin/bash
[root@localhost /]# docker start 0212f84535ce
5.想停止centos7容器的话:docker stop ID号
[root@localhost /]# docker stop 0212f84535ce
有一个命令可以直接将三个步骤结合
这边先将刚刚创建centos7的容器删除(镜像被创建为容器后,必须先删除容器,才能再将镜像删除)
[root@localhost /]# docker ps -a ##先用查看命令查到centos7容器的ID号
[root@localhost /]# docker rm 0212f84535ce ##用docker rm ID删除容器
[root@localhost /]# docker rmi 7e6257c9f8d8 ##删除Centos7的镜像文件
用docker run 镜像名称 bash环境 -c 运行命令(会先去下载镜像再运行)
[root@localhost /]# docker run centos:7 /bin/bash -c ls /
这时查看容器状态会发现,处于exitd状态,容器运行完毕后会自动释放资源,不会占用运行资源。
如果想持续在后台运行就输入
[root@localhost /]# docker run -d centos:7 /bin/bash -c "while true;do echo hello;done"
[root@localhost /]# docker stop 7923d96499cc ##用docker stop的方法停止
[root@localhost /]# docker create -it centos:7 ##先创建一个centos7的容器
[root@localhost /]# docker start cb75fd9fc67b ##启动容器
[root@localhost /]# docker exec -it cb75fd9fc67b /bin/bash #docker exec -it ID号 进入容器
[root@cb75fd9fc67b /]# yum -y install net-tools ##给容器安装ifconfig查看网卡信息的命令
[root@cb75fd9fc67b /]# exit ##直接退出
exit
[root@localhost /]# docker export 88206a23f6a7 > /opt/nginx_c ##将nginx的容器导出到/opt目录下
[root@localhost opt]# docker rm 88206a23f6a7 ##先删除容器
[root@localhost opt]# docker rmi 3f6b82c3706c ##再删除镜像
Untagged: nginx:web
[root@localhost opt]# cat nginx_c | docker import - nginx:web ##导入nginx的容器
9.删除容器
首先必须保证这个容器的状态是exitd的状态不然是删除不了的
[root@localhost opt]# docker rm 88206a23f6a7 ##删除容器
批量删除容器
输入批量删除命令(注意容器不能是up状态,不然会删除报错,那就需要将服务停止,再删除;或者是created状态)
[root@localhost opt]# docker ps -a | awk '{print "docker rm "$1}' | bash