前言
用户使用docker时,需要使用docker命令行与docker daemon交互。docker daemon是docker服务的守护进程,负责接收并分发执行docker命令。
命令帮助
可以使用docker或docker help获取命令帮助
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
.......
子命令分类
分类 | 子命令 |
---|---|
docker环境信息 | info,version |
容器生命周期管理 | create,exec,kill,pause,run,start,stop,restart,unpause |
镜像仓库 | login,logout,pull,push,search |
镜像管理 | build,images,import,load,rmi,save,tag,commit |
容器运维操作 | attach,export,inspect,port,ps,rename,stats,top,wait,cp,diff,update |
容器资源管理 | volume,network |
系统日志信息 | events,history,logs |
以下梳理了1张docker命令结构图:
子命令详解
1. docker环境信息
docker info用于检查docker是否安装正确。如果docker安装正确,会输出docker的配置信息。
docker info结合docker version使用,能够提取到详细的docker环境信息。
2. 容器生命周期管理
容器生命周期管理主要是容器的启、停,下面主要讲解最常用的docker run命令和负责容器启停的docker start/stop/restart命令。
- docker run命令
docker run 可以新建一个容器来运行,命令使用方法如下:
docker run [OPTIONS][IMAGE][COMMAND][ARGS]
示例:
# docker run -i -t --name mytest debian:12.1 /bin/bash
root@2118ee1e4b62:/#
docker run 启动一个容器,并为其分配一个伪终端执行/bin/bash命令,用户可以在该伪终端与容器进行交互。其中:
- -i表示使用交互模式,始终保持输入流开放;
- -t表示分配一个伪终端,一般两个参数可以结合-it;
- –name指定容器名称,未指定,docker将为容器随机分配一个名字;
除了这些选项,docker run还提供了更多的选项: - -c用于给运行在容器中的所有进程分配CPU的shares值,是一个相对权重,实际处理速度与宿主机的CPU有关系;
- -m用于限制容器中所有进程分配的内存总量,以B,K,M,G为单位;
- -v用于挂载一个volume,可以用多个-v参数同时挂载多个volume。volume的格式为[host-dir]:[container-dir]:[rw|ro]
- -p用于将容器的端口暴露给宿主机的端口,常用格式为hostPort:container-port。暴露端口,可以让外部主机通过宿主机暴露的端口来访问容器内的应用。
- docker start/stop/restart命令
对于已经存在的容器,可以通过docker start/stop/restart来启动,停止和重启
docker start 使用-i选项开启交互模式,始终保持输入流开放,使用-a来附加标准输入、输出或错误输出。docker stop/restart命令使用-t来设定容器停止前的等待时间。
3. Docker registry
dokcer registry是存储容器镜像的仓库,可以启动一个dokcer registry容器来创建私有镜像仓库,以此来完成镜像的搜索,上传和下载
docker run -d -p 5000:5000 --name registry --restart always -v /docker/data/registry:/var/lib/registry registry:latest
- dokcer pull
主要用于从私有仓库或共有仓库中拉取image或repository。该命令的使用方式如下:
docker pull [OPTION] NAME[:tag @DIGEST]
#从官方Hub拉取ubuntu:latest镜像
docker pull ubuntu
#从官方Hub拉取并指明“ubuntu:12.04”tag的镜像
docker pull ubuntu:12.04
- docker push
可以将本地的image或repository推送到镜像仓库,使用方式如下:
docker push [OPTIONS] NAME[:tag]
4. 镜像管理
- docker images命令
列出主机上的镜像,默认只列出最顶层的镜像,使用-a显示所有镜像,使用方法如下:
docker images [OPTIONS] [REPOSITORY[:TAG]] - docker rm/rmi命令
这两个命令的功能都是删除,docker rmi用户删除镜像,docker rm用于删除容器。可同时删除多个镜像或容器,也可按条件来删除。
docker rmi $(docker images -f "dangling=true" -q)
5.容器运维操作
- docker attach
docker attach对于开发者来说十分有用,它可以连接到正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互。使用方法如下:
docker attach [OPTIONS] CONTAINER - docker inspect
用来获取镜像或容器的详细信息,默认会列出全部信息,可以通过–format(-f)参数来指定输出的模板格式。使用方式如下:
docker inspect [OPTIONS][CONTAINER | IMAGE…]
示例:
1.获取容器运行时IP地址
# docker inspect -f '{{ .NetworkSettings.IPAddress}}' nginx
172.17.0.2
2.获取容器运行日志路径
# docker inspect --format='{{.LogPath}}' nginx
/var/lib/docker/containers/dc43028b8b230dd1d6c3ce339936e946a6ad8f61fce62fd50ebc9a990e31176d/dc43028b8b230dd1d6c3ce339936e946a6ad8f61fce62fd50ebc9a990e31176d-json.log
…
- docker ps
docker ps 可以查看容器的相关信息,默认只显示正在运行的容器信息。使用方法如下:
docker ps [options]
docker ps命令常用的选项有-a和-l。-a参数可以查看所有容器,包括停止的容器;-l选项则只查看最新创建的容器,包括不在运行中的容器。
6. 其它子命令
- docker commit
commit命令可以将一个容器固化为一个新的镜像。当需要制定特定的镜像时,会进行修改容器的配置。使用方式如下:
docker commit [OPTIONS] [CONTAINER] [REPOSITORY [:TAG] ] - docker events/history/logs
events,history,logs这3个命令用于查看Docker的系统日志信息。events命令会去打印出实时的系统事件;history命令去打印出指定镜像的历史版本信息,即构建该镜像的每一层镜像的命令记录;logs命令会打印出容器中进程的运行日志。
使用方法如下:
docker events [OPTIONS]
docker history [OPTIONS]
docker logs [OPTIONS] CONTAINER