架构和底层技术

3. docker架构底层技术和镜像容器操作 - 图1
3. docker架构底层技术和镜像容器操作 - 图2
3. docker架构底层技术和镜像容器操作 - 图3
3. docker架构底层技术和镜像容器操作 - 图4

Image

3. docker架构底层技术和镜像容器操作 - 图5
每一句对应一层,一共五句,就是五层
3. docker架构底层技术和镜像容器操作 - 图6
3. docker架构底层技术和镜像容器操作 - 图7
自己创建一个镜像

  1. vim hello.c
  2. #include<stdio.h>
  3. int main()
  4. {
  5. printf("hello world!\n");
  6. }
  7. # 编译c,需要依赖
  8. yum install -y gcc
  9. yum install -y glibc-static
  10. # 编译为可执行文件
  11. gcc -static hello.c -o hello
  12. # 执行看效果
  13. ./hello
  14. # 编写dockerfile
  15. vim Dockerfile
  16. # 内容
  17. From scratch
  18. ADD hello /
  19. CMD ["/hello"]
  20. # 构建镜像
  21. docker build -t sixmillions/hello .
  22. # 查看进行
  23. docker image ls
  24. 或者
  25. docker images
  26. ls -lh
  27. # 查看镜像构建历史
  28. docker history 镜像id
  29. docker run sixmillions/hello
  30. 结果会打印出hello world!

3. docker架构底层技术和镜像容器操作 - 图8
3. docker架构底层技术和镜像容器操作 - 图9

容器

3. docker架构底层技术和镜像容器操作 - 图10
查看

# 查看运行的容器
docker container ls
或者docker ps

# 查看所有容器
docker container ls -a
或者
docker ps -a

交互式运行容器

docker run -it 镜像
# 例如:
docker run -it debian
# 查看所有容器的id  
docker container ls -aq

3. docker架构底层技术和镜像容器操作 - 图11
删掉所有的容器

docker rm $(docker container ls -aq)

删除所有离线的容器

 docker container ls -f "status=exited" 

 docker container ls -f "status=exited" -q

docker rm $(docker container ls -f "status=exited" -q)

3. docker架构底层技术和镜像容器操作 - 图12
构建新的镜像

# 根据容器构建
docker container commit
简写成  
docker commit

# 直接构建
docker image build
简写成
docker build

通过容器构建镜像(不推荐)

我们给centos镜像生成的容器中安装vim
3. docker架构底层技术和镜像容器操作 - 图13
我们把刚才这个容器打包成镜像

docker commit 容器 新镜像名字:[tag]
# 不写tag默认是latest

3. docker架构底层技术和镜像容器操作 - 图14
查看centos和我们打包的centos-vim有什么不一样

3. docker架构底层技术和镜像容器操作 - 图15
发现新构建的多出来一层.
但是不推荐这种方式,因为别人不知道你是怎么创建的

通过Dockerfile创建镜像(推荐)

我们用Dockerfile实现上面在centos中安装vim

FROM centos
RUN yum install -y vim

然后构建

docker build -t sixmillions/centos .
# 最后有个点,别丢了,那个是Dockerfile的路径

3. docker架构底层技术和镜像容器操作 - 图16
3. docker架构底层技术和镜像容器操作 - 图17
3. docker架构底层技术和镜像容器操作 - 图18
我们发现Dockerfile也是先运行一个容器,然后安装vim,然后删除容器.