Docker命令详解

在上一篇基于Docker进行Golang开发文章中对Docker进行了安装,并对如何用Docker进行Golang开发进行了描述,本文再对Docker命令进行讲解。

查看Docker命令

➜ tonny@tonny-pc  ~  docker -h
Usage: docker [OPTIONS] COMMAND [arg...]
       docker [ --help | -v | --version ]

A self-sufficient runtime for containers.

Options:

  --config=~/.docker              Location of client config files
  -D, --debug                     Enable debug mode
  -H, --host=[]                   Daemon socket(s) to connect to
  -h, --help                      Print usage
  -l, --log-level=info            Set the logging level
  --tls                           Use TLS; implied by --tlsverify
  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA
  --tlscert=~/.docker/cert.pem    Path to TLS certificate file
  --tlskey=~/.docker/key.pem      Path to TLS key file
  --tlsverify                     Use TLS and verify the remote
  -v, --version                   Print version information and quit

Commands:
    attach    Attach 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
    create    Create a new container
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    exec      Run a command in a running container
    export    Export a container's filesystem as a tar archive
    history   Show the history of an image
    images    List images
    import    Import the contents from a tarball to create a filesystem image
    info      Display system-wide information
    inspect   Return low-level information on a container, image or task
    kill      Kill one or more running container
    load      Load an image from a tar archive or STDIN
    login     Log in to a Docker registry.
    logout    Log out from a Docker registry.
    logs      Fetch the logs of a container
    network   Manage Docker networks
    node      Manage Docker Swarm nodes
    pause     Pause all processes within one or more containers
    port      List port mappings or a specific mapping for the container
    ps        List containers
    pull      Pull an image or a repository from a registry
    push      Push an image or a repository to a registry
    rename    Rename a container
    restart   Restart a container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save one or more images to a tar archive (streamed to STDOUT by default)
    search    Search the Docker Hub for images
    service   Manage Docker services
    start     Start one or more stopped containers
    stats     Display a live stream of container(s) resource usage statistics
    stop      Stop one or more running containers
    swarm     Manage Docker Swarm
    tag       Tag an image into a repository
    top       Display the running processes of a container
    unpause   Unpause all processes within one or more containers
    update    Update configuration of one or more containers
    version   Show the Docker version information
    volume    Manage Docker volumes
    wait      Block until a container stops, then print its exit code

Run 'docker COMMAND --help' for more information on a command.

**attach    Attach to a running container **
--将终端依附到容器上

  1. 运行一个交互型容器
[root@localhost ~]# docker run -i -t centos /bin/bash 
[root@f0a02b473067 /]# 
  • 在另一个窗口上查看该容器的状态
[root@localhost ~]# docker ps -a 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
d4a75f165ce6 centos "/bin/bash" 5 seconds ago Up 5 seconds cranky_mahavira 
  • 退出第一步中运行的容器
[root@d4a75f165ce6 /]# exit 
exit 
  • 查看该容器的状态
[root@localhost ~]# docker ps -a 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
d4a75f165ce6 centos "/bin/bash" 2 minutes ago Exited (0) 23 seconds ago cranky_mahavira 
  可见此时容器的状态是Exited,那么,如何再次运行这个容器呢?可以使用docker start命令。 
* 再次运行该容器 
``` bash
[root@localhost ~]# docker start cranky_mahavira 
cranky_mahavira
  • 再次查看该容器的状态
[root@localhost ~]# docker ps -a 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
d4a75f165ce6 centos "/bin/bash" 6 minutes ago Up 29 seconds cranky_mahavira 

因为该容器是交互型的,但此刻我们发现没有具体的终端可以与之交互,这时可使用attach命令。

  • 通过attach命令进行交互
[root@localhost ~]# docker attach cranky_mahavira 
[root@d4a75f165ce6 /]# 

**build Build an image ****from a Dockerfile **
--通过Dockerfile创建镜像


commit Create a ****new image from a container's changes
--通过容器创建本地镜像


注意:如果是要push到docker hub中,注意生成镜像的命名。

[root@localhost ~]# docker commit centos_v1 centos:v1
68ad49c999496cff25fdda58f0521530a143d3884e61bce7ada09bdc22337638 
[root@localhost ~]# docker push centos:v1 
You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: <user>/centos) 

用centos:v1就不行,因为它push到docker hub中时,是推送到相应用户下,必须指定用户名。譬如我的用户名是ivictor,则新生成的本地镜像命名为: docker push victor/centos:v1,其中v1是tag,可不写,默认是latest。


**cp Copy file/folders from a container to a HOSTDIR or to STDOUT **
--在宿主机和容器之间相互COPY文件

cp的用法如下:

Usage: 
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|- 
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH

**create Create a new container **
--创建一个新的容器,注意,此时,容器的status只是Created


diff Inspect changes on a container's filesystem
--查看容器内发生改变的文件,以我的mysql容器为例


**events Get real time events from the server **--实时输出Docker服务器端的事件,包括容器的创建,启动,关闭等。


**exec Run a command in a running container **
--用于容器启动之后,执行其它的任务

通过exec命令可以创建两种任务:后台型任务和交互型任务

#后台型任务:
[root@localhost ~]#docker exec -d cc touch 123 #其中cc是容器名 
#交互型任务: 
[root@localhost ~]# docker exec -i -t cc /bin/bash 
root@1e5bb46d801b:/# ls 
123 bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

** export Export a container's filesystem as a tar archive**
--将容器的文件系统打包成tar文件

有两种方式:

[root@localhost ~]# docker export -o mysqldb1.tar mysqldb 
[root@localhost ~]# docker export mysqldb > mysqldb.tar

**history    Show the history of an image **
--显示镜像制作的过程,相当于dockfile


images    List images
--列出本机的所有镜像


**import    Import the contents ****from a tarball to create a filesystem image **
--根据tar文件的内容新建一个镜像,与之前的export命令相对应


**info    Display system-wide information **
--查看docker的系统信息


**inspect    Return low-level information on a container or image **
--用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。


**kill    Kill a running container **
--强制终止容器

关于stop和kill的区别,docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然, 容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。


**load    Load an image from a tar archive or STDIN **
--与下面的save命令相对应,将下面sava命令打包的镜像通过load命令导入


**login    Register or log in to a Docker registry
**--登录到自己的Docker register,需有Docker Hub的注册账号


**logout    Logout from a Docker registry **

--退出登录


**logs    Fetch the logs of a container **
--用于查看容器的日志,它将输出到标准输出的数据作为日志输出到docker logs命令的终端上。常用于后台型容器


**pause    Pause all processes within a container **
--暂停容器内的所有进程, 此时,通过docker stats可以观察到此时的资源使用情况是固定不变的, 通过docker logs -f也观察不到日志的进一步输出。


**port    List port mappings or a specific mapping for the CONTAINER **
--输出容器端口与宿主机端口的映射情况


ps    List containers
--列出所有容器,其中docker ps用于查看正在运行的容器,ps -a则用于查看所有容器。


**pull    Pull an image or a repository from a registry **
--从docker hub中下载镜像


**push    Push an image or a repository to a registry **
--将本地的镜像上传到docker hub中 前提是你要先用docker login登录上,不然会报错误。


**rename    Rename a container **
--更改容器的名字


restart    Restart a running container
--重启容器


**rm    Remove one or more containers **
--删除容器

注意,不可以删除一个运行中的容器,必须先用docker stop或docker kill使其停止。 当然可以强制删除,必须加-f参数 如果要一次性删除所有容器,可使用 docker rm -f docker ps -a -q,其中,-q指的是只列出容器的ID。


rmi    Remove one or more images
--删除镜像


run    Run a command in a new container
--让创建的容器立刻进入运行状态,该命令等同于docker create创建容器后再使用docker start启动容器


** save    Save an image(s) to a tar archive **
--将镜像打包,与上面的load命令相对应


search    Search the Docker Hub for images
--从Docker Hub中搜索镜像


**start    Start one or more stopped containers **
--启动容器


**stats    Display a live stream of container(s) resource usage statistics **
--动态显示容器的资源消耗情况,包括:CPU、内存、网络I/O


** stop    Stop a running container **
--停止一个运行的容器


** tag    Tag an image into a repository **
--对镜像进行重命名


**top    Display the running processes of a container **
--查看容器中正在运行的进程


**unpause    Unpause all processes within a container **
--恢复容器内暂停的进程,与pause参数相对应。


**version    Show the Docker version information **
--查看docker的版本


wait    Block until a container stops, then print its exit code
--捕捉容器停止时的退出码

执行此命令后,该命令会“hang”在当前终端,直到容器停止,此时,会打印出容器的退出码。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容