Docker
一、概述
-
Docker是一个开源的应用容器引擎
-
Docker支持将软件编译成一个镜像,然后在镜像中做好各种软件的配置,将镜像发布出去,其他使用者可以直接使用镜像,而不需要进行配置
-
运行中的镜像称为Docker容器,容器启动的速度非常快
二、核心概念
- 概念
- docker主机(host):安装了Docker程序的机器(Docker直接安装在操作系统之上)
- docker客户端(Client):连接docker主机进行操作
- docker仓库(Registry):用来保存各种打包好的软件镜像
- docker镜像(Images):软件打包好的镜像;放在docker仓库中
- docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
- 使用步骤
- 安装Docker
- 去Docker仓库中找到这个软件对应的镜像
- 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器
三、Docker的安装
-
Ubuntu下安装docker
-
因为apt官方仓库docker版本比较陈旧,所以先卸载可能存在的旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io
-
更新apt索引
sudo apt-get update
-
安装以下可以通过HTTPS使用存储库(repository)
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
-
为了确认所下载软件的合法性,需要添加软件源的GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
安装存储库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu artful stable"
-
安装最新版的Docker CE
sudo apt-get install -y docker-ce
-
查看docker服务是否启动
systemctl status docker
-
使用命令启动
sudo systemctl start docker
四、常用命令
4.1 帮助命令
# 版本
docker version
# 信息描述
docker info
# 帮助命令
docker --help
4.2 镜像命令
# docker上可以运行的镜像模板
docker images
# REPOSITORY:镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像创建时间 SIZE:镜像大小
-
选项
-a:列出本地所有镜像
-q:只显示镜像ID
–digests:显式镜像的摘要信息
–no-trunc:显式完整的镜像信息
# 查找某个镜像
docker search [镜像名]
-
选项
–no-trunc:显式完整的摘要信息
# 下载镜像,TAG可省略
docker pull [镜像名:TAG]
# 删除某个镜像
docker rmi [镜像名或ID]
# 可以删除多个镜像,镜像名之间以空格隔开
docker rmi -f 多个镜像名
# 删除所有镜像
docker rmi -f $(docker images -qa)
-
选项
-f:强制删除
4.3 容器命令
# 运行一个容器
docker run [OPTIONS] IMAGES [COMMAND] [ARG ...]
-
选项
–name:为容器指定一个名称
-d:后台运行容器,并返回容器ID,即启动守护式容器
-i:以交互模式运行容器,通常和-t同时使用
-t:为容器重新分配一个伪终端
-P:随机端口映射
-p:指定端口映射:ip:hostPort:containerPort;ip::containerPort;hostPort:containerPort;containerPort
# 列出正在运行的容器
docker ps
-
选项
-a:列出当前运行的和已经退出的容器
-l:列出最近运行过的容器
# 以交互的方式运行容器
docker run -it centos
# 退出容器(容器变为down状态)
exit
# 离开容器(容器依然是Up状态)
ctl+p+q
# 重启容器
docker restart [容器ID]
# 停止容器
docker stop [容器ID]
# 删除容器
docker rm [容器ID]
# 以守护方式启动容器
docker run -d [容器名或ID]
# 查看日志
docker logs -f -t --tail [容器ID]
-
选项
-t:加入时间戳
-f:跟随最新的日志打印
–tail [数字]:显式最后多少条
# 查看容器内部运行的进程
docker top [容器ID]
# 查看容器的内部细节
docker inspect [容器ID]
# 进入正在运行的容器并且以命令行交互
docker exec [容器ID] [可以跟要执行的命令:例如 ls]
# 文件拷贝
docker cp 容器ID:容器内路径 目的主机路径
五、Docker镜像
5.1 概述
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容。Union文件系统是Docker镜像的基础。Union文件系统时一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层一层的叠加,同时可以将不同的目录挂载到同一个虚拟文件系统的下。
- 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的
文件系统会包含所有底层的文件和目录。 - 特点:docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像顶部。这一层通常称为“容器层”,“容器层”之下的都叫
“镜像层”。
5.2 镜像commit命令
docker commit:提交容器副本,使之成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签]