简介:Docker 是一个开源的应用容器引擎,基于 Go 语言开发,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的系统。
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)
Docker 三个核心概念
镜像(Image)
是一个包含有文件系统的面向 Docker 引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个 Ubuntu 镜像就是一个包含 Ubuntu 操作系统环境的模板。Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
容器(Container)
类似于一个轻量级的沙盒,可以将其看作一个极简的 Linux 系统环境(包括 root 权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker 引擎利用容器来运行、隔离各个应用。
容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。
注意:镜像本身是只读的,容器从镜像启动时,Docker 在镜像的上层创建一个可写层,镜像本身不变。
仓库(Repository)
镜像仓库,是 Docker 用来集中存放镜像文件的地方。
Docker常用命令
Docker 的常用命令一般分为:镜像管理、容器管理。
查看 Docker 版本
列出常用命令
镜像管理命令
下面使用 busybox 软件作为示例,busybox 软件是一个集成了非常多最常用的 Linux 命令和工具的软件集合。
查看所有镜像
docker images docker images ls
|
REPOSITORY:镜像来自哪个仓库
TAG:镜像的标签信息,版本之类的信息
IMAGE ID:镜像创建时的id
CREATED:镜像创建的时间
SIZE:镜像文件大小
下载软件镜像
docker pull busybox:latest
|
备注:latest 表示使用 busybox 软件的最新版本,所以软件默认下载都是 latest 版本。
导出镜像
docker save busybox > busybox.tar
|
备注:把 busybox 镜像导出为 busybox.tar 文件,可以把 busybox.tar 文件复制到别的操作系统上使用,免除下载时网络慢的问题。
删除镜像
docker rmi busybox:latest
|
备注:镜像一般都会根据版本打包,如果有下载一个软件的多个版本就需要指定具体版本信息。如 busybox:1.26 就会删除 busybox 软件的 1.26 版本的镜像,不会删除latest 版本的镜像。
导入镜像
docker load < busybox.tar
|
备注:使用导出命令导出的镜像,可以通过此命令导入到没有下载此软件的操作系统,方便网络条件差的情况使用。
更改镜像名
docker tag busybox:latest busybox:test
|
备注:busybox:latest原镜像名,busybox:test要改成的镜像名
容器管理命令
运行容器
docker run -d --name=busybox busybox:latest ping 114.114.114.114 docker container run -p 8000:3000 -it demo:0.0.1 /bin/bash
|
run
:run参数代表启动容器
-d
:以后台daemon的方式运行
--name
:指定一个容器的名字,此后操作都需要使用这个名字来定位容器。
busybox:latest
:容器所使用的镜像名字
ping 114.114.114.114
:启动容器执行的命令
查看运行的容器
docker ps docker container ls
|
查看所有容器
CONTAINER ID
:容器启动的id
IMAGE
:使用哪个镜像启动的容器
COMMAND
:启动容器的命令
CREATED
:创建容器的时间
STATUS
:容器启动时间
PORTS
:容器映射到宿主机的端口
NAMES
:容器启动的名字
启动容器
重新启动容器
停止容器
杀死容器
清理所有终止状态的容器
列出容器映射的端口
查看容器内部运行的进程
查看容器或镜像底层信息
删除运行中的容器
执行容器内命令
docker exec -it busybox ls docker exec -it busybox /bin/bash
|
备注:-it 交互终端
复制容器内文件
docker cp busybox:/etc/hosts hosts
|
查看容器日志
docker logs -f busybox docker logs [OPTIONS] busybox
|
OPTIONS说明:
-f
:跟踪日志输出
--since
:显示某个开始时间的所有日志
-t
:显示时间戳
--tail
:仅列出最新N条容器日志
docker-compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 compose命令大多依赖于yml文件,默认使用当前目录下的“docker-compose.yml“,也可以通过-f指定。
构建建启动nignx容器
docker-compose up -d nginx
|
进入到nginx容器中
docker-compose exec nginx bash
|
删除所有nginx容器,镜像
重新启动nginx容器
docker-compose restart nginx
|
在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose run --no-deps --rm php-fpm php -v
|
构建镜像
docker-compose build nginx
|
不带缓存的构建
docker-compose build --no-cache nginx
|
参考链接
你必须知道的Dockerfile
Docker-compose常用命令