Docker入门
简介
为什么需要docker?
不同物理机器可能配置完全不一样,即便都是Linux系统但是比如Ubuntu和CentOS也有差别,而对于测试、部署需要相同的环境(包括各种软件:数据库、web服务器等),所以需要一种工具来模拟完全相同的开发环境。
虚拟机是一种思路,模拟硬件并运行整个OS,但是太过于笨重、性能低下、占用资源多。Docker和虚拟机类似,但是不模拟硬件,而是为每个应用提供完全隔离的运行环境,不同环境之间互不影响,这就是所谓的容器Container
什么是Docker?
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
基本概念
Dockerfile、Image、Container
Dockerfile:用来构建镜像(Image)的自动化脚本,文本内容包含了一条条构建镜像所需的指令和说明,案例如下:
Image镜像:虚拟机的快照,包含了所要部署的应用程序和需要的库。镜像可以看作容器的模板,通过镜像可以创建不同的容器,容器类似于不同的虚拟机,容器之间互不影响。
常用命令
Docker服务
sudo service docker start
sudo systemctl start docker
镜像
docker build /path/to/a/Dockerfile
Build an image from a Dockerfile即根据Dockerfile创建镜像,如下:**
docker build . -t my-image
**:用于根据Dockerfile的内容构建镜像,-t
选项用于指定镜像名称,my-image
是你为镜像命名的名称,可以替换成其他任意名称。.
表示当前目录,指示 Docker 在当前目录下寻找Dockerfile
文件。以下示例,通过目录下的 Dockerfile 构建一个 nginx:v3(镜像名称:镜像标签)docker build . -t nginx:v3
docker image ls
列出本机的所有 image 文件**
docker image pull
**将 image 文件从仓库抓取到本地docker image rm [imageName]
删除image
容器
docker ps -a
ordocker container ls
列举所有容器**
docker container run --name container_name IMAGE_NAME
**从image文件生成一个正在运行的容器实例,–name指定生成的容器名称,container可以不写,即docker run ...
TODO:
docker run -it IMAGE_NAME[:TAG]
docker container start [containerID]
启动已经生成、已经停止运行的容器文件docker container stop [containerID]
停止容器docker container kill[containerID]
对于那些不会自动终止的容器,必须使用docker container kill
命令手动终止容器。该命令和stop命令的区别在于向container中的进程发送的信号不同,具体见阮一峰:Docker 入门教程docker container restart [containerID]
重启容器**
docker container attach
**Attach local standard input, output, and error streams to a running containerdocker container rm [containerID]
删除容器
其他
Docker和Kubernetes的区别和联系