docker 覆盖 entrypoint_Docker进阶

本文主要研究Docker,进一步学习在Docker上的项目开发。参考文章 Docker Developer Docker教程。

Docker command

详细信息参见CommandLine

docker login

该命令用于登录docker registry.

docker login [OPTIONS] [SERVER]
  • -u 指定username
  • -p 指定password

docker logout

该命令用于logout docker registry.

docker logout [SERVER]

docker build

该命令使用Dockerfile和context来构建docker image,其中context位于PATH或URL中的一系列文件。

docker build [OPTIONS] PATH | URL | -
  • -f 用来指定Dockerfile的全路径,默认为PATH/Dockerfile
  • --pull 总是试图获取image的最新版本
  • --tag, -t 以'name:tag' format来为image生成tag,可以为image创建多个tag

URL可以是Git repository, pre-packaged tarball contexts and plain text files.

//branch container中的docker目录下
$ docker build https://github.com/docker/rootfs.git#container:docker
$ docker build http://server/context.tar.gz
$ docker build -f PATH/Dockerfile

docker tag

该命令为指定image创建image tag。

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Image tag通常为registry_host:registry_host/service:version。

//image id为0e5574283393,registry为fedora,版本为version1.0
$ docker tag 0e5574283393 fedora/httpd:version1.0

//使用image name来生成image tag
$ docker tag httpd fedora/httpd:version1.0

//使用旧的image tag来指定image
$ docker tag httpd:test fedora/httpd:version1.0.test

docker push

该命令将image或repo推送到registry.

docker push [OPTIONS] NAME[:TAG]

执行docker push时,中断进程,如使用Ctrl+C, 将会中止docker push。默认情况下,docker daemon会一次推送five layers image,带宽不好时,可使用--max-concurrent-uploads来限制。

docker pull

该命令从registry中pull image或repo。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

大多数的image使用docker hub中的base image来创建。默认情况下,docker daemon将一次性pull three layers of image,若带宽有限,使用--max-concurrent-downloads来限制。Layers可以被其他image重用。

使用image name或image tag来pull image将会得到最新的版本。但若只想获得指定版本,可以使用digest来pull image。

$ docker pull ubuntu:14.04
$ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

中止docker pull过程,只需要ctrl+C.

docker image

该命令用来管理image,具有一系列的子命令。

docker image COMMAND

a5313625bd0a727f7bff28767eec9d14.png

docker images

该命令用来列出image的信息,默认会展示all top level images, their repository and tags, and their size.

docker images [OPTIONS] [REPOSITORY[:TAG]]

Docker image有中间layer来提高可重用性,减少磁盘使用,并通过缓存步骤来加速docker build。

1fcbac005c084dfb54b51ea0770cf70b.png

docker container

该命令用来管理docker container,包含一系列子命令。

docker container COMMAND

39baa6f0f4f739c3bc83b3bf2d141266.png

357f2062956ab6b8beed3f3c0dff7eff.png

docker node

该命令用于管理集群的node,包含一系列子命令。

docker node COMMAND

b56307faba26b9449c272301fddaa71b.png

docker service

该命令用于管理service,包含一系列命令。

docker service COMMAND

0090f156bf7cf7984dee6c2ce23f6ecd.png

docker stack

该命令用来管理docker stack,具有一系列子命令。

docker stack [OPTIONS] COMMAND

a6b985a3fb4aaecc43c10a2a79435016.png

docker run

Docker在isolated containers中运行processes。 Container就是一个运行在主机上的process, 并在文件系统、网路以及process tree与主机隔离。

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

默认情况下,container运行在foreground,可以指定option -d来使其运行在background。运行在background模型的container,当其中的root process exit时,该container exit。当指定--rm时,container自己exit或daemon exit时,container被移除。

运行在foreground,使用-a=[]将console绑定到container中的process的STDIN, STDOUT, STDERR。option -it使用tty来与container process交互。

--restart用来指定restart policy,分为no/on-failure[:max-retries]/always

由Dockerfile构建image后,除了FROM/MAUNRAINER/RUN/ADD等Dockerfile命令不能重写,其他都能重写。通过在Dockerfile中指定CMD,也可以使用COMMAND来覆盖原有的CMD。若指定了ENTRYPOINT,CMD或COMMAND将作为ENTRYPOINT的参数。ENTRYPOINT和COMMAND类似,用来指定container启动时执行的命令。

docker exec

在运行的container中执行命令。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

docker start/stop

启动或停止一个或多个container.

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]

docker pause

暂停一个或多个container中所有processes

docker pause CONTAINER [CONTAINER...]

docker ps

用来列出container

docker ps [OPTIONS]

docker kill

kill一个或多个running container

docker kill [OPTIONS] CONTAINER [CONTAINER...]

docker attach

绑定local standard input, output, and error streams到运行的docker container。

docker attach [OPTIONS] CONTAINER

使用示例:

$ docker run -d --name topdemo ubuntu /usr/bin/top -b
$ docker attach topdemo

docker commit

根据container的修改来生成新的image。

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

支持的Dockerfile指令有CMD |ENTRYPOINT| ENV|EXPOSE|LABEL| ONBUILD| USER| VOLUME|WORKDIR

使用示例:

$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS              NAMES
c3f279d17e0a        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            desperate_dubinsky
197387f1b436        ubuntu:12.04        /bin/bash           7 days ago          Up 25 hours                            focused_hamilton

$ docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a  svendowideit/testimage:version4

f5283438590d

$ docker run -d svendowideit/testimage:version4

89373736e2e7f00bc149bd783073ac43d0507da250e999f3f1036e0db60817c0

$ docker ps

CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS              NAMES
89373736e2e7        testimage:version4  "apachectl -DFOREGROU"  3 seconds ago       Up 2 seconds        80/tcp             distracted_fermat
c3f279d17e0a        ubuntu:12.04        /bin/bash               7 days ago          Up 25 hours                            desperate_dubinsky
197387f1b436        ubuntu:12.04        /bin/bash               7 days ago          Up 25 hours    

docker cp

用于在container filesystem和local filesystem之间相互拷贝。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

docker create

创建一个新的container

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create -t -i fedora bash

docker diff

用来查看container形成之后file system中文件和directory的变化。主要包括3种变化: A表示增加,D表示删除,C表示变化。

docker diff CONTAINER

docker events

从server中获得实时的events。

docker events [OPTIONS]

docker history

查看image的历史

docker history [OPTIONS] IMAGE

docker save

将一个或多个image进行打包

docker save [OPTIONS] IMAGE [IMAGE...]
$ docker save -o ubuntu.tar ubuntu:lucid ubuntu:saucy

docker load

从压缩包中导入image

docker load [OPTIONS]
docker load --input fedora.tar

docker rm/rmi

删除container/image

docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rmi [OPTIONS] IMAGE [IMAGE...]

其中,rmi从host node上删除image,并不删除docker registry中的image。不能删除具有running container的image,除非使用-f option。

docker top

显示container中运行的processes

docker top CONTAINER [ps OPTIONS]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值