Docker核心概念:
Docker有三大核心概念:镜像、容器和仓库。熟悉三大核心概念对于掌握Docker技术很重要。
Docker镜像:
Docker镜像类似于虚拟机镜像,可以理解为一个只读的模板。
镜像是创建Docker容器的基础。
Docker容器:
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。它可以启动、停止、删除,而容器之间是彼此互相隔离、互不可见的。
可以把容器看做一个简易的linux系统及运行着应用程序的一个盒子。
Docker仓库:
Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所。
目前最大的公开仓库是Docker Hub。
注:镜像自身是只读的,容器从镜像启动的时候,会在镜像最上层创建一个可写层。
Docker引擎:
Docker引擎目前分为两个版本:社区版本(CE)和企业版本(EE)。
社区版本包括大部分的核心功能,企业版本通过付费的方式提供认证支持、镜像管理、容器托管、安全扫描等高级服务。
社区版本每个月会发布一次尝鲜版本,每个季度(3、6、9、12)会发布一次稳定版本。版本命名格式为“年份.月份”。
安装Docker:
系统环境为centos7.4,设置镜像源为阿里源。
[root@docker01 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@docker01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@docker01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
设置容器源为阿里源:
[root@docker01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [root@docker01 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@docker01 ~]# yum makecache fast
安装并启动Docker:
[root@docker01 ~]# yum -y install docker-ce [root@docker01 ~]# systemctl start docker [root@docker01 ~]# systemctl enable docker [root@docker01 ~]# docker -v Docker version 19.03.8, build afacb8b
配置镜像加速:
[root@docker01 ~]# vim /etc/docker/daemon.json [root@docker01 ~]# cat /etc/docker/daemon.json { "registry-mirrors":["https://655dds7u.mirror.aliyuncs.com"] } [root@docker01 ~]# systemctl restart docker
运行容器测试:
[root@docker01 ~]# docker run -d -p 80:80 --name web nginx [root@docker01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0091879e5d99 nginx "nginx -g 'daemon of…" 30 seconds ago Up 29 seconds 0.0.0.0:80->80/tcp web
Docker镜像管理:
搜索镜像:docker search [关键词]
例:
# docker search centos #搜索centos镜像(优先选择星数多的)
获取镜像:docker pull NAME:[TAG]
例:
# docker pull busybox:latest #获取busybox:latest镜像,不指定TAG默认下载最新版
查看镜像:docker images或docker image ls
例:
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 602e111c06b6 12 days ago 127MB busybox latest be5888e67be6 2 weeks ago 1.22MB
镜像的五列信息分别为:镜像来源,镜像标签,镜像ID,创建时间,镜像大小
添加镜像标签:docker tag [镜像] [镜像标签]
例:
# docker tag busybox:latest user/busybox:latest
查看详细信息:docker inspect [镜像]
例:
# docker inspect busybox:latest
删除镜像:docker rmi 或 docker image rm
例:
# docker rmi -f nginx #-f选项为强制删除镜像,即使有容器依赖它
清理镜像:docker image prune
例:
# docker image prune -a #清除所有无用镜像
选项:
# docker image prune -a #清除所有无用镜像 选项: -a:删除所有无用镜像,不仅是临时镜像 -f:强制删除镜像,不进行确认
导出镜像:docker save
例:
# docker save -o busybox_latest.tar busybox:latest # ls busybox_latest.tar
载入镜像:docker load
例:
# docker load -i busybox_latest.tar
上传镜像:docker push
例:
# docker tag busybox:latest user/busybox:latest # docker push user/busybox:latest
补充:不想敲命令的话,可以做个脚本安装:
脚本内容如下:
#!/bin/bash function install_pre (){ yum install -y yum-utils device-mapper-persistent-data lvm2 &>/dev/null yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo &>/dev/null yum makecache fast &> /dev/null } function install_docker (){ yum -y install docker-ce &>/dev/null systemctl start docker &>/dev/null } function configure_docker (){ echo -e "{" >/etc/docker/daemon.json echo -e "\t\"registry-mirrors\":[\"https://655dds7u.mirror.aliyuncs.com\"]" >>/etc/docker/daemon.json echo -e "}" >>/etc/docker/daemon.json } function restart_docker (){ systemctl restart docker docker -v } main (){ install_pre install_docker configure_docker restart_docker } main echo "docker安装完成... ..."
下一节将介绍docker容器管理