docker是干什么的
在介绍之前,我希望你能先记住这句话:“Docker 是一个便携的应用容器”。你可以不知道 Docker 所说的的“便携式容器”到底是什么意思,但是你必须清楚 Docker 在日常中能带来非常大的效率提升。 docker 提供了一个开始,打包,运行App应用的平台,把app和底层infrastructure(基础设施)隔离开来。
Docker的组织结构
- Docker Engine包括:
- 后台进程(dockerd)
- REST API Server
- CLI接口(docker)
- 底层技术支持:
- Namespaces:做隔离在pid,net,ipc,mnt,uts
- Control groups: 做资源限制
- Union file systems: Containe 和 image的分层
什么是Image:
- 文件和meta data的集合(root filesystem)
- 分层的,并且每一层都可以添加改变删除文件,成为一个新的image
- 不同的image可以共享相同的layer
- Image本身是read-only的
关于docker 镜像的示例代码:
##镜像的获取 docker pull [Tag]/[ImageName] ##根据dockerfile构建一个docker镜像 docker build -t(指定一个Tag) xiaopeng/hello .(当前路径下的Dovkerfile) ##查看一个镜像的分层 docker history [image ID] ##查看所有镜像 docker images ##删除镜像 docker rmi [imageID] ##把一个容器变成镜像(不安全,不建议使用,会有分层结构不明确的情况) docker commit [cantainer] [repository[:tag]] [flags]
什么是Container
- 通过Image创建出来的一个应用
- 在Image layer 之上建立一个container layer(可读写)
- 用 Java 的面向对象来表达:镜像就是类,容器就是实例
- Image 负责app的存储和分发,Container 负责运行app
关于docker 容器的示例代码:
## 获取docker 容器id docker ps -aq ## 输出容器第一项的内容 docker ps -a | awk {'print$1'} ##获取status=exited的容器 docker container ls -f "status=exited" -q ## -it交互方式启动容器 docker run -it [container] ## run启动一个容器 docker run [container] ## -d后台方式启动容器 docker run -d [container] ##删除容器 docker rm [cantainerID] ##查看正在运行的容器 docker ps ##查看所有的容器 docker ps -a 复制代码
现在来创建一个简单的dokcer images and container,我们首先新建dockerfile
文件,内容如下:
FROM centos ## 引用基础镜像 RUN yum install -y vim ## 运行shell命令 复制代码
此时我们build构建镜像的时候可以看到 running in 78a5c866d2b1
[ vagrant @ localhost docker - centos - vim ] s docker build - t xiaopeng163/centos- vim - new . Sending build context to Docker daemon 2.048kB Step 1/2:FR0M centos -->3fa822599e10 Step 2/2: RUN yum install ---> Running in 78a5c866d2b1l Loaded plugins : fastestmirror , ovl
在build 过程中生成了一个临时的container,在临时的container里面去执行RUN yum install -y vim
命令,最后build完成后就会删除这个临时的container 7f903766231e
complete ! Removing intermediate container 178a5c866d2b1 --->7f903766231e Successfully built 7f903766231e
至此,我们已经学会的docker的基本应用~~~
拓展
docker 运行的容器要求至少有一个进程在执行,如果没有进程执行则会自动退出。