一、Docker概述
1、Docker是什么?
·是一种轻量级的“虚拟机”
·在Linux容器里运行应用的开源工具
·容器技术,沙箱机制
2、Docker与虚拟机的区别
类型 虚拟机 Docker
启动 1-3分钟 毫秒
容量 占用大 占用少
安全 安全 不安全(共享资源内核)
3、Docker的使用场景
·打包应用程序间简化部署
·可脱离底层硬件任意迁移
·例:服务器从腾讯云迁移到阿里云
二、Docker的核心概念及安装方式
1、Docker核心概念
三要素:
·镜像:一个面向Docker容器引擎的只读模板
·容器:从镜像创建的运行实例
·仓库:集中保存镜像的地方
2、CentOS安装Docker的两种方式
·使用CURL获得Docker的安装脚本进行安装
·使用YUM仓库来安装Docker
三、安装Docker
部署19版Docker
1、安装依赖包
#yum-utils 提供了 yum-config-manager
#device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
#device mapper 是 linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构
2、设置阿里云镜像源
查看是否有镜像源
没有此镜像源,无法成功下载docker
3、安装Docker-CE并设置环境
4、镜像加速(到阿里云镜像加速寻找自己的加速器)
5、网络优化
四、Docker镜像操作
1、下载镜像:Docker pull
[root@server1 docker]# docker pull nginx
[root@server1 docker]# docker pull tomcat
2、查看镜像:docker images
[root@server1 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest bc9a0695f571 17 hours ago 133MB
tomcat latest e0bd8b34b4ea 6 days ago 649MB
3、删除镜像:docker rmi
[root@server1 docker]# docker rmi tomcat
[root@server1 docker]# docker rmi nginx
4、查看镜像详细信息:docker inspect +镜像名称或镜像ID
[root@server1 docker]# docker inspect e0bd8b34b4ea
5、添加新标签:docker tag
[root@server1 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest e0bd8b34b4ea 6 days ago 649MB
[root@server1 docker]# docker tag tomcat:latest tomcat:web
[root@server1 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest e0bd8b34b4ea 6 days ago 649MB
tomcat web e0bd8b34b4ea 6 days ago 649MB
docker添加新标签后,该镜像有多重标签时,rmi+镜像IP无法删除,可通过rmi+镜像名称+标签将其中一个名称删除,当镜像只有一个名称和标签时,可将该镜像删除
6、导出镜像 docker save -o 保存位置 镜像名称
[root@server1 docker]# docker save -o /opt/tomcat tomcat:latest
[root@server1 docker]# ls /opt
containerd rh tomcat
7、载入镜像 docker load <
[root@server1 docker]# docker load < /opt/tomcat
Loaded image: tomcat:latest
五、Docker容器操作
1、查看正在运行容器 docker ps
查看所有容器 docker ps-a(列出所有的容器,包括未运行的容器)
2、创建容器 docker create -it
[root@server1 docker]# docker create -it nginx:latest /bin/bash
[root@server1 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e7c2a64746f nginx:latest "/docker-entrypoint.…" 47 seconds ago Created youthful_gauss
3、启动容器 docker start +容器ID
[root@server1 docker]# docker start 9e7c2a64746f
9e7c2a64746f
[root@server1 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e7c2a64746f nginx:latest "/docker-entrypoint.…" 3 minutes ago Up 45 seconds 80/tcp youthful_gauss
创建容器一气呵成(docker create + docker start)
[root@server1 docker]# docker run -itd centos:7 /bin/bash
e2b83449a581b708f49a9d5a4b9ccd8ccd4c3486088f569f609da56d9f337e9d
[root@server1 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2b83449a581 centos:7 "/bin/bash" 10 seconds ago Up 9 seconds quirky_perlman
c912cb86dd8d nginx:latest "/docker-entrypoint.…" 28 minutes ago Up 27 minutes 80/tcp interesting_hertz
4、进入容器 docker exec -it +ID / bin/bash
[root@server1 docker]# docker exec -it 9e7c2a64746f /bin/bash
root@9e7c2a64746f:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
5、导出容器
[root@server1 docker]# docker export 6b5740016e3c > /opt/nginx_c
6、导入容器(会生成镜像,而不会创建容器)
[root@server1 docker]# cat /opt/nginx_c | docker import - nginx:jiu
7、删除容器(容器必须为停止状态)
[root@server1 docker]# docker stop ff30ed7850a1
ff30ed7850a1
[root@server1 docker]# docker rm ff30ed7850a1
ff30ed7850a1
8、批量删除容器(删除已退出容器)
[root@server1 docker]# docker ps -a | awk '{print "docker rm "$1}' | bash
输出第一字段
[root@server1 docker]# docker ps -a | awk '{print "docker rm "$1}'
docker rm CONTAINER
docker rm 6b5740016e3c