容器学习点点滴滴(二)
- 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组中,形成新的网段。网段内的主机可以互通,不同的网段不能互通。