专栏目录
专栏目录
- 【Docker系列】1-virtual box配置Linux虚拟机
- 【Docker系列】2-Docker入门,容器化剖析
- 【Docker系列】3-Centos7 Docker安装手册
- 【Docker系列】4-Docker image和container实战操作大全
- 【Docker系列】5-Dockerfile镜像制作指南
- 【Docker系列】6-Docker Hub和Registry实战
- 【Docker系列】7-Docker 数据持久化和网络模式
Docker image和container实战操作大全
深入探讨Image
说白了,image就是由一层一层的layer组成的。
Image常见操作
(1)查看本地image列表
docker images
docker image ls
(2) 获取远端镜像
docker pull
(3) 删除镜像[注意此镜像如果正在使用,或者有关联的镜像,则需要先处理完]
docker image rm imageid
docker rmi -f imageid 强制删除镜像
docker rmi -f $(docker image ls) 删除所有镜像
(4)运行镜像
docker run image
(5) 发布镜像
docker push
官方Image
https://github.com/docker-library
官方镜像制作的Dockerfile
https://github.com/docker-library/official-images/tree/master/library
深入探讨Container
既然container是由image运行起来的,那么是否可以理解为container和image有某种关系?
理解
:其实可以理解为container只是基于image之后的layer而已,也就是可以通过docker run image
创建出一个container出来。
container到image
既然container是基于image之上的,想想是否能够由一个container反推出image呢?
肯定是可以的,比如通过docker run运行起一个container出来,这时候对container对一些修改,然后再生成一个新的image,这时候image的由来就不仅仅只能通过Dockerfile咯。
(1) 拉取一个centos image
docker pull centos
(2) 根据centos镜像创建出一个container
docker run -d -it --name my-centos centos
(3) 进入my-centos容器中
docker exec -it my-centos bash
(4) 输入vim命令
bash: vim: command not found
(5) 我们要做的是
对该container进行修改,也就是安装一下vim命令,然后将其生成一个新的centos
(6) 在centos的container中安装vim
yum install -y vim
(7) 退出容器,将其生成一个新的centos,名称为"vim-centos-image"
语法 docker commit container-name newImage-name
docker commit my-centos vim-centos-image
(8) 查看镜像列表,并且基于"vim-centos-image"创建新的容器
docker run -d -it --name my-vim-centos vim-centos-image
(9) 进入到my-vim-centos容器中,检查vim命令是否存在
docker exec -it my-vim-centos bash
结论 :可以通过docker commit命令基于一个container重新生成一个image,但是一般得到image的方式不建议这么做,不然image怎么来的就全然不知咯。
container资源限制
如果不对container的资源做限制,它就会无限制地使用物理机的资源,这样显然是不合适的。
查看资源情况
:docker stats
内存限制
--memory Memory limit
如果不设置 --memory-swap,其大小和memory一样
docker run -d --memory 100M --name tomcat1 tomcat
CPU限制
--cpu-shares 权重
docker run -d --cpu-shares 10 --name tomcat2 tomcat
图形化资源监控
https://github.com/weaveworks/scope
sudo curl -L git.io/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope
scope launch 39.100.39.63
# 停止scope
scope stop
# 同时监控两台机器,在两台机器中分别执行如下命令scope launch ip1 ip2
container常见操作
(1) 根据镜像创建容器
docker run -d --name -p 9090:8080 my-tomcat tomcat
(2) 查看运行中的container
docker ps
(3) 查看所有的container[包含退出的]
docker ps -a
(4) 删除container
docker rm containerid
docker rm -f $(docker ps -a) 删除所有container
(5) 进入到一个container中
docker exec -it container bash
(6) 根据container生成image
docker
(7) 查看某个container的日志docker logs container
(8) 查看容器资源使用情况
docker stats
(9) 查看容器详情信息
docker inspect container
(10) 停止/启动容器
docker stop/start container
底层技术支持
Container是一种轻量级的虚拟化技术,不用模拟硬件创建虚拟机。
Docker是基于Linux Kernel的Namespace、CGroups、UnionFileSystem等技术封装成的一种自定义容器格式,从而提供一套虚拟运行环境。
Namespace:用来做隔离的,比如pid[进程]、net[网络]、mnt[挂载点]等
CGroups: Controller Groups用来做资源限制,比如内存和CPU等
Union file systems:用来做image和container分层
所有文章都是以专栏系列编写,建议系统性学习,更容易成为架构师!
博主每天早晚坚持写博客给与读者价值提升,为了让更多人受益,请多多关照,如果觉得文章质量有帮助到你,请关注我的博客,收藏此文,持续提升,奥利给!
另外我不打算靠运营方式拿到博客专家的认证,纯纯的科技与狠活来征服读者,就看读者的感恩之心了,祝你好运连连。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)