Linux上安装docker
概念
- Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
- 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
- Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
- Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
虚拟机和docker的区别
- 虚拟机:虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
- docker:容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
- 传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
- 与虚拟机相比,Docker 隔离性更弱。Docker 属于进程之间的隔离,虚拟机可实现系统级别隔离。
优势
- 更快速的交付和部署:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。
- 更轻松的迁移和扩展:Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
- 一个镜像到处部署
- 更高的资源利用率
镜像、容器、仓库核心概念
镜像(image)
镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
容器(container)
容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中
仓库 Docker hub/registry
共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
镜像就相当于打包好的版本,镜像启动之后运行在容器中,仓库就是装存储镜像的地方。
安装docker
- 下载安装包
yum install docker
- 启动、重启
service docker start|restart
- 设置为开机启动
chkconfig docker on
- 测试是否安装
docker version
- 加速docker镜像
国内连接 Docker 的官方仓库很慢,因此我们在日常使用中会使用Docker 中国加速器。编辑vi /etc/docker/daemon.json问价,添加如下配置:
{
"registry-mirrors":["https://registry.docker-cn.com"],
"live-restore":true
}
常用命令
docker上有许多命令,这里主要写下几个重要的命令。
- 查看宿主机上的镜像,Docker镜像保存在/var/lib/docker目录下
docker images
- 拉取镜像
docker pull image_name //image_name 为镜像名称
- 删除镜像
docker rmi docker.io/tomcat:7.0.77-jre7
或者
docker rmi b39c68b7af30 //b39c68b7af30 为镜像ID
想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
要删除全部image的话
docker rmi $(docker images -q)
- 查看正在运行的容器
docker ps
- 查看所有的容器
docker ps -a
- 启动容器
docker run -d -p 8081:8080 springboot-demo
docker run --name=con_name images
- 重启容器
docker restart container_name/container_id
- 停止容器
docker stop container_name/container_id
- 删除容器的命令
docker rm container_name/container_id
- 看容器的端口映射情况
docker port con_id
- 动态查看容器日志
docker logs -f con_name //con_name 为容器名称
- 进入容器
docker attach con_name
参考资料
https://www.cnblogs.com/shamo89/p/9201513.html
https://blog.youkuaiyun.com/anxpp/article/details/73478883
https://www.jsdaima.com/blog/177.html
http://adrai.github.io/flowchart.js/