什么是容器
- 容器技术已经成为应用程序封装和交付的核心技术
 - 容器技术的核心有以下几个内核技术组成:
- Cgroups( Control Groups)-资源管理
 - NameSpace-进程隔离
 - SELinux安全
 
 - 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速
 
什么是Docker
- Docker是完整的一套容器管理系统
 - Docker提供了一组命令,让用户更加方便直接地使 用容器技术,而不需要过多关心底层内核技术
 
Docker特性
1)Docker优点
- 相比于传统的虚拟化技术,容器更加简洁高效
 - 传统虚拟机需要给每个VM安装操作系统
 - 容器使用的共享公共库和程序
 

2)Docker缺点
- 容器的隔离性没有虚拟化强
 - 共用Linux内核,安全性有先天缺陷
 - SELinux难以驾驭
 - 监控容器和容器排错是挑战
 
部署Docker
1)环境准备
- 需要64位操作系统
 - 至少RHEL65以上的版本,强烈推荐RHEL7
 - 卸载firewalld
 
2)安装Docker
- 
docker虚拟机配置
2核,1G内存,4台,能访问外网
192.168.1.100repo(yum服务器)
192.168.1.30 registry(容器仓库)
192.168.1.31 docker1(容器主机1)
192.168.1.32 docker2(容器主机2) - 
配置yum源
docker软件包位于光盘Rhl7 -extras-.iso中 
mkdir /var/www/html/extras 
mount -t iso9660 -o ro,loop RHEL7OSP-extras.iso  /var/www/html/extras
- 安装Docker(Docker1 and Docker2)
 
配置yum源
yum -y install docker
systemctl start docker
systemctl enable docker
docker version    #查看docker版本信息
ifconfig   #如果有docker0网络设备,证明安装成功
Docker镜像
1)什么是镜像
- 在Docker中容器是基于镜像启动的
 - 镜像是启动容器的核心
 - 镜像采用分层设计
 - 使用快照的COW技术,确保底层数据不丢失
 - 可以多个容器同时使用

 
2)Docker Hub镜像仓库
- https://hub.docker.com
 - Docker官方提供的公共镜像的仓库(Registry)
 
] docker search IMAGE_NAME   #搜索镜像
NAME    #镜像名
OFFICIAL    #状态为[OK],代表该镜像为官方镜像,非官方镜像会有安全风险
] docker search busybox
3)镜像操作
] docker help pull
] docker pull 镜像名	 #从仓库下载镜像
] docker pull docker.io/busybox   
] docker images  #查看已有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/busybox   latest              6d5fcfe5ff17        7 weeks ago         1.22 MB
#镜像名 				标签					镜像ID				创建时间				大小
] docker help push
] docker push docker.io/busybox   #上传镜像到仓库
] docker save docker.io/busybox:latest -o busybox.tar    #将镜像导出为tar文件,镜像的名称:标签=唯一标识
] docker load -i busybix.tar   #从tar文件导入镜像
] docker history docker.io/centos:lastest   #查看镜像制作历史(可以查看镜像层数,启动命令等)
] docker inspect docker.io/centos:lastest   #查看镜像底层信息(详细信息)
] docker rmi docker.io/busybox    #删除镜像(镜像已启动容器时需要先删除容器)
] docker tag docker.io/busybox:lastest NAME:LABEL #为镜像添加名称和标签
4)容器常用命令
所有针对容器的命令,指定容器的ID来对容器做操作
docker run	 		 #运行容器
docker ps  			 #查看容器列表
docker stop   		 #关闭容器
docker start  		 #启动容器
docker restart  	 #重启容器
docker attach|exec 	 #进入容器
docker inspect   	 #查看容器底层信息
docker top    	 	 #查看容器进程列表
docker rm     		 #删除容器
例:
docker run -i交互式 -t终端 -d后台   #需要区别要启动的容器服务的种类来确定是否将容器放置后台
docker run 参数 镜像名称:标签 启动命令
run = 创建 + 运行 + 连接   
docker run -it docker.io/centos:latest /bin/bash 
docker run -it docker.io/centos:latest   #不写启动命令时,以默认命令启动
docker inspext 容器
docker run -itd docker.io/nginx:latest   #如果启动命令为后台运行的服务时,加-d
docker ps
docker ps -a   #显示所有容器(包括已停止的)
docker ps -q   #只显示容器ID
docker top 容器ID  #查看容器正在执行的进程,相当于ps
docker rm 容器ID   #删除容器,需要容器已关闭
docker rm $(docker stop 容器ID)   #执行stop会返回容器ID,通过$()将返回值传递给rm
docker rm $(docker stop $(docker ps -aq))
docker exec -it 容器ID 启动命令   #以新进程连接
docker attach -it 容器ID 启动命令   #以容器上帝进程的身份连接
使用attach连接容器,推出后,容器将会停止,因为退出时相当于退出了上帝进程。使用exec连接,推出后容器继续运行。
来源:CSDN
作者:baiyuani
链接:https://blog.csdn.net/weixin_45157506/article/details/104323982
