容器学习点点滴滴(二)

  • 2019 年 10 月 6 日
  • 笔记

一、如何自创一个私有镜像?

方法一:用commit命令

1、假设当前正运行一个httpd的容器,我们可以直接进行容器修改html内容。

docker exec -it 2b66eedfc838 /bin/bash

2b66eedfc838:是用docker ps查看出的容器的id

-it:可无干扰的进入容器

2、修改index.html文件

vim index.html

注:如果vim命令不具备,需要apt-get命令另行安装。

3、提交修改后的容器为私有镜像。

docker commit 2b66eedfc838 my-httpd

4、查看docker镜像是否存在

方法二:用Dockerfile

1、创建一个文件夹

mkdir myimage

2、创建Dockerfile

3、build Dockerfile

build docker .

4、查看是否成功

二、容器有哪些运行方式?

1、前台运行

如Docker run -it ubuntu /bin/bash

-i代表interactive

-t代表terminal

2、后台运行

如Docker run -d -p 8088:80 docker.io/httpd

-d代表detached,附带后台运行

三、容器能否控制资源使用?

答案是可以,用CGroups控制cpu、磁盘i/o、内存等,感觉上与虚机控资源类似。

四、容器的网络运行机制是怎么样的?

容器默认的网络通信机制是bridge,如何理解?

每启动一个容器,实际就分配一个veth接口,该接口与docker0接口通过bridge桥接通信。而docker0与宿主机的网卡实际是通过端口映射方式互通。

用docker network inspect bridge命令,一目了解。网关相当于在docker0上,而每个容器的ip地址在veth接口上。

实际上,我们还可以新创建一个类似的docker0网关,并把新的容器加入该bridge组中,形成新的网段。网段内的主机可以互通,不同的网段不能互通。