Docker 概述
Docker 概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker的历史
在2010年,几个大胡子年轻人从美国知名创业孵化器Y Combinator毕业后,在旧金山成立了一家做PaaS 平台的公司,名叫「dotCloud」,其最主要的创始人是「Solomon Hykes」。
dotCloud在当时的商业模式为:以多语言PaaS为卖点,使得用户可以选择不同的开发组件和语言来运行程序。而随着微软、谷歌、亚马逊、IBM等大厂纷纷加入PaaS平台,竞争更是异常激烈,dotCloud的成长变得非常缓慢,可谓是举步维艰,期投资人Peter Fenton说dotCloud在2012年的挣扎,就像温水煮青蛙。
面对那段艰困的时期,在2013年3月份,dotCloud创始人Hykes做了一个在现在看来无比正确的决定:将核心技术开源,开源也就是开放源代码,让全世界的开发者贡献自己的代码。开源后越来越多的工程师开始发现这项技术的优点,人气迅速攀升,速度之快,令人咋舌。这项技术,就是docker,使用Go语言。
3月开源,在3月底就发布了docker 0.1版本,此后几乎每个月都有一个新版本产生,2014年6月,docker第一个里程碑版本1.0发布,到2017年2月8日,docker更新到1.13.1(更新日志),此后又分为Docker CE(社区版)和 Docker EE(商业版)。
Docker安装与卸载
安装Docker
- 安装Docker ,登录 Docker 官方网站 ,在Docker Engine 中有安装centOS 的教程
- 首先第一步,先卸载旧的Dokcer版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 第二步,需要安装包
yum install -y yum-utils
- 第三步,设置镜像仓库,不要使用官方提供的,因为速度太慢,最好使用阿里云国内安装源安装Docker。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 第四步,安装Docker
yum install docker-ce docker-ce-cli containerd.io
- 启动Docker,并检验是否安装成功
systemctl start docker
docker version
- 运行hello-world
docker run hello-world
- 查看下载的hello-world 镜像
docker images
卸载Docker
- 卸载软件
yum remove docker-ce docker-ce-cli containerd.io
- 删除目录(docker 的默认工作路径 /var/lib/containerd)
rm -rf /var/lib/docker
Docker 常用命令
帮助命令
docker version # 显示docker 的版本信息
docker info # 显示docker 的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
或者查官方文档
镜像命令
- 查看所有镜像的信息
docker images
# 命令后面的可选项
-a ,--a 列出所有镜像
-q, --quiet 只显示镜像的ID
字段分析
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 5 months ago 13.3kB
REPOSITORY 仓库的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建的时间
SIZE 镜像的大小
- 搜索镜像
docker search 搜索镜像
# 可选项,通过搜藏数来过滤
--filter=STARS=3000 #通过搜索数来过来镜像
- 下载镜像
docker pull 镜像名[:tag]
# tag 是可选项,如果不选tag ,那么默认下载最新版本
- 删除镜像
docker rmi -f IMAGE/REPOSITORY # 删除指定镜像
docker rmi -f $(docker images -aq) # 删除所有镜像,循环删除
容器命令
有了镜像才可以创建容器,通过下载centOS 镜像来测试学习
- 下载centOS 镜像
docker pull centos
- 新建容器并启动
docker run [可选参数] 镜像
# 参数说明
--name="Name" #容器名字 tomcat1 tomcat2,用来区分容器
-d #后台方式运行
-it #使用交互方式运行,进入容器查看内容
-p #指定容器的端口 -p 8080:8080
-p 主机端口:容器端口(常用)-p 容器端口
容器端口-P #随机指定端口
# 例子 docker run -it centos /bin/bash
注意;当我们使用 docker run -d 镜像名,然后使用命令 docker ps 发现没有该容器在运行。
因为docker 容器使用后台运行, 就需要有一个前台进程, docker 发现没有应用,就会自动停止。
- 列出所有运行的容器
docker ps
# 可选项
-a #列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器 ?是指显示容器的数量
-q #只显示容器的编号
- 从容器中退回主机(直接停止容器并退出)
exit
- 从容器中退会主机(容器不停止并推出)
Ctrl + P + Q
- 删除容器
docker rm 容器ID #删除指定的容器,不能删除正在运行的容器,如果要删除运行的容器 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
- 启动和停止容器的操作
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止当前正在运行的容器
docker kill 容器ID # 强制停止当前容器
操作命令
- 查看日志
docker logs -f -t --tail 容器
#参数
-tf # 显示日志,t 代表时间戳
--tail number # 要显示日志条数
- 查看容器中进程信息 ps
docker top 容器ID
- 查看容器的元数据
docker inspect 容器ID
- 进入当前正在运行的容器 (我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置)
# 进入容器后开启一个新的终端,可以在里面操作(常用)
docker exec -it 容器ID /bin/bash
docker attch 容器ID (进入容器正在执行的终端,不会启动新的进程)
- 从容器中拷贝文件到主机上
docker cp 容器ID:容器内路径 目的的主机路径