docker是为开发者和管理者提供开发,发布,运行程序的容器平台
使用linux容器发布应用叫做容器化,容器并不是新的,但是使得发布应用更加方便
容器化更加流行,具有以下特点:
灵活:非常复杂的应用都能容器化
轻量级:容器共享主机内核
可互换:可以在更新和升级中发布
可移植:在本地构建,发布在云,在任何地方运行
可扩展:可以自动增加分布式容器副本
可堆叠:可以垂直地堆叠发布服务
镜像和容器
容器通过运行一个镜像来启动,镜像是可执行的包,包含运行一个应用所有的代码,运行环境,库,环境变量,配置文件
容器是镜像运行时的一个实例,在执行的时候尽享是什么样的,也就是有状态的或者用户处理的镜像。可以通过查看容器运行的镜像
容器和虚拟机
容器运行在linux上,和主机上其他容器共享内核,在不同的线程上运行,不需要更多的内存,使得变得很轻量
相反,虚拟机 通过管理程序虚拟访问主机资源就像一个成熟的访客操作系统。虚拟机提供环境比大多程序运行时需要更多的资源。
安装docker
https://www.docker.com/products/docker-desktop
安装完成后,查看版本
docker --version
Docker version 18.03.1-ce, build 9ee9f40
查看docker相关信息
docker info
报错的时候使用sudo ,权限问题
查看docker程序是否可用
docker run heello-world
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...
查看本地下载的镜像
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 2cb0d9787c4d 5 weeks ago 1.85kB
rabbitmq management c51d1c73d028 3 months ago 149MB
mysql 5.7 9e64176cd8a2 16 months ago 407MB
hub.c.163.com/library/mysql 5.7 9e64176cd8a2 16 months ago 407MB
learn/ping latest 584ff7a39036 2 years ago 125MB
learn/tutorial latest a7876479f1aa 5 years ago 128MB
查看正在运行的容器实例
docker container ls
上面的命令总结如下:
## List Docker CLI commands docker docker container --help
## Display Docker version and info
docker --version
docker version docker info
## Execute Docker image
docker run hello-world
## List Docker images
docker image ls
## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq
容器化使得持续集成和持续发布变得没有缝隙