Docker 基础概念和操作

2017-06-12  本文已影响38人  忽忽_

Docker engine

下图展示了 docker engine 的结构,主要包含四部分:image、container、network、data volumes。具体可以参考:Docker architecture

Docker engine

Docker 包括以下几个基本概念

常用操作命令

当 docker 容器中指定的应用终结时,容器也自动终止。

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一种是将在终止状态(stopped)的容器重新启动。

因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。

容器操作类命令

docker run
创建并启动容器
    
-c 指定 cpu 的核心数量
-m 指定最大内存
-e --env 设置环境变量
--network
--ip 设置 ip
    
-d 设置后台运行,并返回容器 id
-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上

-P Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
-p 指定容器和宿主的端口映射,也可以多次使用 -p 来指定多个端口映射

    - 映射所有接口地址
    hostPort:containerPort 将本地指定端口映射到容器指定端口,会默认绑定本地所有接口上的所有地址
    
    - 映射到指定地址的指定端口
    ip:hostPort:containerPort 指定映射使用一个特定的地址,比如:localhost 或 127.0.0.1
    
    - 映射到指定地址的任意端口
    ip::containerPort 绑定 localhost 的任意端口到容器的5000端口,本地主机会自动分配一个端口
    
    还可以指定端口协议(tcp|udp)
    hostPort:containerPort/udp

-v 指定卷映射到宿主的目录路径
--device
    
--rm 退出时删除容器
--restart 
--link 参数的格式为 --link name:alias,其中 name 是要连接的容器的名称,alias 是这个连接的别名。
    
--name 指定 container 名称
--hostname
docker exec
在容器中执行命令

-d 设置后台运行,并打印容器 id
-e 设置环境变量
-i 让容器的标准输入保持打开
-t 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-u
docker start
启动一个停止的容器

docker stop
停止指定容器

docker restart
重启镜像
docker ps   
列出当前运行中的所有容器
    
-a 列出所有的包含未运行的
-s 显示文件大小
-q 返回容器 id
docker rm
删除指定镜像
    
-f 强制删除正在运行的容器
-v 删除容器和对应的卷
    
docker rm $(docker ps -a -q)
docker logs
查看当前容器运行日志信息

docker stats
列出所有容器系统资源使用情况(CPU、内存、IO)
    
docker port
查看当前映射的端口配置,也可以查看到绑定的地址。
    
docker inspect 容器
返回 容器当前的实例信息,包含状态、主机配置信息(资源、网络、挂载)
    
docker export
如果要导出本地某个容器,可以使用 docker export 命令,这样讲导出容器快照到本地文件
    
docker import
可以使用 docker import 从容器快照文件中再导入为镜像

镜像操作类命令

docker create
创建一个镜像

docker pull
从仓库获取一个 dockerfile,然后构建出一个本地镜像

docker diff
对比当前容器的差异
    
docker commit
将容器的存储层保存下来成为镜像

- a 作者
- c 添加变更列表
- m 提交内容描述
- p 在提交的时候暂停运行容器
    
docker commit -a "ytWman <ytwman@gmail.com>" -m "updated default page" webserver nginx:v2
    
docker build
通过 Dockerfile 构建镜像
    
docker images
列出当前所有镜像
    
docker search
搜索镜像
    
docker rmi
删除本地镜像
    
docker history 镜像
查看镜像的变更记录,查看提交的内容

查看状态类

docker info
查看 docker 信息

docker version
查看 docker 当前版本

定制镜像(Dockerfile)

如果我们使用 docker commit 来创建镜像,那我们的镜像构建过程都是黑箱操作,没人知道执行过什么命令,怎么生成的镜像,而且制作人可能过一段时间后也无法记清楚具体执行了什么操作。而且镜像每次构建后的会更加臃肿。

我们可以使用 Dockerfile 来一步步配置每个镜像环境,然后通过 docker build 命令来构建一个新的镜像。

Dockerfile 主要是用来移植或分享使用的。

仓库

仓库是几种存放镜像的地方,实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有很多个仓库,而每个仓库下面有多个镜像。

网络配置

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。

可以使用 docker ps 或 docker logs 命令来查看应用的信息。

参考文档

https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

上一篇 下一篇

猜你喜欢

热点阅读