一、介绍
docker是通过内核虚拟化技术(namespace和cgroups)来实现容器的资源隔离和资源限制。由于docker是通过操作系统层的虚拟化来实现隔离,所以对系统内核有一定要求,并且docker容器在运行时不需要额外的系统资源开销,比kvm虚拟机更轻量。
docker主要目标:构建,运输,处处运行。只要能运行docker容器,那么docker镜像中的软件也可以运行。
构建:制作docker镜像,打包容器的所有系统目录文件。
运输:下载docker镜像
运行:基于docker镜像提供的rootfs,启动容器。
优点:
解决了操作系统和软件运行环境的依赖;
开发人员不用担心不会部署环境;
开发环境,测试环境,生产环境高度一致;
让用户体验产品新特性的右一种思路。
二、安装
镜像:是一个系统的制度模板,例如一个微型的centos系统镜像
容器:容器进程,应用程序封装在容器中运行,相互隔离
仓库:存储镜像的一个仓库地址,便于他人共享镜像文件的一个地方。
三、启动一个容器
sudo docker container run hello-world
四、docker容器、镜像的增删改查
1、增
从dockerhub仓库中获取docker镜像,从github获取代码的原理一样
例如,docker pull centos 去docker仓库中寻找centos系统镜像。
2、查找
(1)查看本地机器中所有的镜像文件
docker images
(2)查看docker正在运行的容器进程
docker ps
(3)查看所有正在运行或者挂掉的进程
docker ps -a
(4)查看容器进程内运行情况
docker logs <容器id>
docker log -f <容器id> 实时刷新容器内的日志
(5)查看容器内的端口转发情况
docker port <容器id>
3、改
(1)运行一个docker容器实例,运行镜像文件,产生容器进程
docker run <镜像文件名字> 例如docker run centos
(2)交互式的运行一个存活的docker容器
-i 是交互式的命令操作,-t 是开启一个终端, /bin/bash 指定shell解释器
docker run -it centos /bin/bash
(3)运行一个活着的容器
-d 让容器后台运行
-c 指定一段shell代码
--name 指定容器进程的名字
docker run --name “dzw” -d centos /bin/bash -c "while true; do echo hello centos; sleep 1; done"
(4)进入一个正在运行的容器
docker exec -it 153 /bin/bash
4、删除
docker rm <容器进程id> 删除容器进程
docker rmi <镜像id> 删除镜像,必须先删除有相关依赖的容器进程记录
批量删除无用的docker记录
docker rm ‘docker ps -aq’
批量删除镜像
docker rmi ‘docker images -aq’
批量停止容器
docker stop ‘docker ps -aq’
五、提交创建自定义的镜像
1、进入交互式的ubuntu容器中,发现没有vim命令
docker run -it ubuntu
2、在当前容器中安装vim
换源