docker初体验

虚拟化技术

硬件虚拟化
	运行在硬件之上的虚拟化技术,核心技术是hypervisor,可以虚拟化硬件资源。同hypervisor层可以创建多个虚拟机。
操作系统虚拟化
	运行在操作系统之上的虚拟化技术,模拟的是运行在一个操作系统之上的多个不同的进程,并将其封装在一个密闭的容器中。

docker

1、前言
docker基于LXC技术,LXC是Linux平台上的容器化技术实现。
LXC:Linux Container,是一种内核虚拟化技术。

docker是一个开源的应用容器引擎,基于google公司推出的go语言实现。-只是管理容器的引擎
docker技术让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,打包好的容器可以发布到任何流行的Linux服务器上运行。解决了开发与运维之间的矛盾。
docker释放了虚拟化的威力,极大的降低了计算机资源供应的成本,重新定义了程序开发测试、交付和部署的过程。
docker是一种轻量级的操作系统虚拟化解决方案。

容器是将代码和环境的关系打包在一起的一个集合,而虚拟机是在物理层面上分出的操作系统。

docker的优势
1、docker容器的启动可以实现秒级实现
2、更轻松的迁移和扩展
...
2、环境搭建
1、查询是否搭建过docker
yum list installed|grep docker
2、安装docker
yum install docker -y
	验证安装成功:
		docker --version
3、卸载docker
	需要查询系统装了多少docker组件,yum卸载多少
3、使用
1、启动、停止、重启
	systemctl start docker
	systemctl stop docker
	systemctl restart docker
2、查看docker系统信息
	docker info
3、帮助
	docker
	docker command --help
4、docker底层的运行原理
	docker服务启动-->下载镜像-->启动该镜像得到一个容器-->容器中运行着程序
4、拉取镜像等基础命令
查询镜像
    1、https://hub.docker.com/ 官网下载
    2、docker search
下载镜像
	docker pull tomcat
	镜像加速:
	在 /etc/docker/daemon.json 文件中插入
	{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"]}
	systemctl daemon-reload
	systemctl restart docker
运行镜像
	docker run tomcat 前台运行
	docker run -d tomcat 后台运行
	docker run -d -p 8080:8080 tomcat 端口映射,后面的是docker的端口,客户机和docker默认采用桥接的模式
	
显示本地已有镜像
	docker images 或 docker image ls
进入容器
	docker exec -it 容器id bash
		-i表示交互式的
		-t分配一个虚拟控制台
查询容器
	docker ps 显示运行中的
关闭容器
	docker stop 容器id/名称
5、docker核心组件
核心三要素
	镜像、容器、仓库
	docker是管理容器的引擎
镜像
镜像:
    是一个只读模板,可以创建docker容器
    是由许多层的文件系统叠加成的,
    最下面是一个引导文件系统的bootfs,
    第二层是一个root文件系统的rootfs,root文件系统通常指某种操作系统,如centos
    在root文件系统之上有很多层文件系统,这些文件系统叠加在一起,构成docker镜像
镜像加载原理:
	docker的镜像实际是由一层一层的文件系统组成,称之为UnionFS
	资源共享,方便复制迁移,为了复用
日常操作:
    下载:
    	docker pull redis:3.2.12
    安装镜像的两种方式:
        官方镜像下载
        自己编写dockerfile文件
    列出已下载的镜像:
        docker images
        docker image redis
    运行镜像:
    	docker run -d
    进入容器:
    	docker exec 容器id bash
    删除镜像:
    	docker rmi redis:3.2.12 
    	docker images获取所有镜像
  
容器
容器:
	是通过镜像创建的运行实例,它可以被启动、停止、删除。每个容器是互相隔离的、保证安全平台。
	docker利用容器来运行应用的,镜像是只读的,容器时在启动的时候创建一层可写层作为最上层。
日常操作:
	基于镜像启动容器,启动终止状态的容器
	显示所有容器:
		docker ps -a
	开启容器:
		docker start 容器id
	停止容器:
		docker stop 容器id
	删除容器:
		docker rm 容器id
	进入容器:
		docker exec -it 容器id bash
	查看容器信息:
		docker inspect 容器id
    停止所有容器,并删除
    	docker stop $(docker ps -q)&docker rm `docker ps -qa`
    挂载数据卷
		--privileged=true 保证权限
	挂载数据卷
		docker容器的数据保存在宿主机的磁盘中
		docker run -it --privileged=true -v /宿主机路径:/容器路径:rw 镜像名
		docker run -it --privileged=true -v /宿主机路径:/容器路径:ro 镜像名  容器内部readonly
		1、数据卷可以在容器之间共享和重用
		2、卷中数据更改实时生效
		3、数据卷中的修改不会包含在镜像更新中
		4、数据卷的生命周期一直持续到没有容器使用为止
		--容器卷的继承,继承的是父镜像的卷规则
			docker run -it --privileged=true --volumes-from 父镜像 --name name 镜像名称
仓库
仓库:
	仓库时存放镜像文件的场所。
	分为公开仓库和私有仓库。
	镜像分类两类,官方创建的镜像,docker用户创建的镜像。
日常操作:
	查询:
		docker search 镜像名称
	下载:
		docker pull 镜像名称
创建私有库:
	1、下载docker registry
		docker pull registry
	2、运行私有库
		docker run -d -p 5000:5000 -v /opt/docker/registry/:/opt/docker/registry/ --privileged=true registry
	3、修改名称为符合要求的tag
        docker commit -m="centos7 add ip" -a="hetester" 9329ec5e5273 centos-ip:1.0
        docker tag centos-ip:1.0 xxxx:5000/centos-ip:1.0
		配置daemon.json增加私服ip
	4、提交镜像到私服
		docker push xxxx:5000/centos-ip
	5、拉取提交的镜像
		docker pull xxxx:5000/centos-ip
    提交之前之后查询:curl -XGET http://xxxx:5000/v2/_catalog
    
6、实例
– docker安装mysql
1、docker pull mysql
2、docker run -d -p 33006:3306 -e MYSQL_DATABASE=workerdb -e MYSQL_RANDOM_ROOT_PASSWORD=123456 -d mysql
3、docker exec -it 38140e9b4558 bash
4、docker run -d -p 33006:3306 -e MYSQL_DATABASE=workerdb -e MYSQL_ROOT_PASSWORD=123456 -d mysql
此时可以进入容器内部登录mysql
–docker安装nginx
1、docker pull nginx
2、docker run -d -p 50080:80 nginx
3、docker exec -it 7387e4539800 bash
部署静态网页:

7、自定义镜像
基本构成:
	基础镜像信息 FROM
	维护者信息	
	镜像操作指令
	容器启动时执行指令
指令:
	FROM 文件第一条指令必须为FROM指令,同一个dockerfile中创建多个镜像时,可以使用多个FROM指令
	MAINTAINER 维护者信息
	ADD 复制指定的文件到容器中
	ENV 指定一个环境变量,后续会被RUN指令使用,并在容器中保持
	CMD 指定启动容器时执行的命令,每个dockerfile只能有一条cmd命令,用户启动容器时指定了运行的命令,会覆盖掉原有的命令

构建镜像:
	docker build -t 名称 vb .
扩展镜像:
    	docker commit -m="提交信息" -a="作者名称" 容器id 新镜像:版本号	
自定义jdk镜像
FROM centos:latest
MAINTAINER hetester
ADD  jdk-8u331-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_331
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -version
其他
将linux文件拷贝到docker
	docker cp t.html 7387e4539800:/usr/share/nginx/html
修改标签
	docker tag 镜像:tag host:port/repostitory:tag
grep -o 只显示匹配到的内容
grep -i 大小写不敏感
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值