Docker(知识点汇总)与Docker相关的工具、命令、文件等

1、进程管理器supervisord(http://supervisord.org/)或 runit(http://smarden.org/runit/)

2、Dockerfile构建 Docker 容器的基石,构建时走的配置文件,更像是定义了构建的步骤

3、run-主进程运行多久,容器就运行多久。

4、docker inspect (ID或容器名称来获取更多有关某个容器的信息)

5、docker diff(ID或容器名称查看文件的修改记录)

6、docker logs(ID或容器名称查看日志)

7、docker rm -v $(docker ps -aq -f status=exited)(删除已停止的容器)

      -a显示所有容器包括未运行的

      -q静默模式只显示容器号

      -f根据条件(status=exited)过滤内容

      -v由 Docker 管理的数据卷已经没有和任何容器关联时,都会一律删除

8、docker commit cowsay test/cowsayimage容器转镜像,无论容器是在运行中还是在停止状态都可以

      -cowsay容器名称

      -test仓库名称

      -cowsayimage镜像名称

9、docker build -t test/cowsay-dockerfile .构建镜像

      -t镜像的名字及标签

      -f指定要使用的Dockerfile路径

      “.”:上下文,即当前目录。该目录下的所有文件和目录就形成了构建环境的上下文,并在生成镜像的过程中传递给 Docker                  守护进程
 

10、entrypoint.sh在启动容器时,可以通过 shell 脚本执行些预处理逻辑需要添加执行权限以及在Dockerfile中添加ENTRYPOINT ["/entrypoint.sh"]

11、docker push 命令上传到 Docker Hub如quay.io

12、MAINTAINER John Smith <john@smith.com> (在 Dockerfile 内加入MAINTAINER 指令给镜像设定作者的联系信息)

13、docker pull 镜像名称:下载镜像

14、docker search 镜像名称:搜索镜像

15、“用户”命名空间——镜像名称以字符串和 / 开头

        由 Docker 公司所控制部分由第三方维护——不包含前缀或 /,属于“根”命名空间(“root”namespace)

        第三方的寄存服务(并非 DockerHub)——以主机名或 IP 开头的名称

16、--link CONTAINER:ALIAS

        CONTAINER 是目标容器的名称(被连接的容器)

        ALIAS(被连接的容器别名)是主容器用来称呼目标容器的一个本地名称。

       容器被启动的一方称为主容器(因为它是负责建立连接的一方)

17、volume数据卷声明一个目录为数据卷有两种方法:

       第一种是在 Dockerfile 里使用 VOLUME 指令——VOLUME /data
 

       第二种是在执行docker run 的时候使用 -v 参数——$ docker run -v /data test/webserver

默认情况下,目录或文件会挂载在主机的 Docker 安装目录之下(通常是 /var/lib/docker/)。
执行 docker run 命令的时候可以指定用于挂载的主机目录(例如 docker run -d -v /host/
dir:/container/dir test/webserver)
 

18、.dockerignore从构建环境的上下文中排除不必要的文件
.git ➊
*/.git ➋
*/*/.git ➌
*.sw? ➍
➊ 上下文的根目录下的 .git 文件或目录会被排除,但允许它出现在子目录中
(即 .git 会被排除,但 dir1/.git 不会)。
➋ 只排除第一层目录下的 .git 文件或目录(即 dir1/.git 会被排除,但 .git 和
dir1/dir2/.git 不会)。
➌ 只排除第二层目录下的 .git 文件或目录(即 dir1/dir2/.git 会被排除,
但 .git 和 dir1/.git 不会)。
➍ test.swp、 test.swo 和 bla.swp 会被排除,但 dir1/test.swp 不会。
此处不支持完整的正则表达式,例如 [A-Z]*。
这本书写作的时候,暂时还没有办法同时匹配所有子目录下的文件(例如,
你不能只用一个正则表达式来同时忽略 /test.tmp 和 /dir1/test.tmp)。


19、docker history mongo:latest查看组成镜像的所有层

20、以下列出的是 Dockerfile 的可用指令。
ADD
从构建环境的上下文或远程 URL 复制文件至镜像。如果是从一个本地路径添加一个归
档文件,那么它会被自动解压。由于 ADD 指令涵盖的功能相当广泛,一般最好还是使用
相对简单的 COPY 指令来复制构建环境上下文的文件和目录,并用 RUN 指令配合 curl 或
wget 来下载远程资源(这样还可以在同一个指令中处理和删除下载文件)。
CMD
当容器启动时执行指定的指令。如果还定义了 ENTRYPOINT ,该指令将被解释为
ENTRYPOINT 的参数(在这种情况下,请确保使用的是 exec 格式)。 CMD 指令也会被
docker run 命令中镜像名称后面的所有参数覆盖。假如定义了多个 CMD 指令,那么只有
最后一个生效,前面出现过的 CMD 指令全部无效(包括出现在基础镜像中的那些)。
COPY
用于从构建环境的上下文复制文件至镜像。它有两种形式, COPY src dest 以及 COPY
["src", "dest"],两者皆从上下文中的 src 复制文件或目录至容器内的 dest。如果路
径中有空格的话,那么必须使用 JSON 数组的格式。通配符可以用来指定多个文件或
目录。请注意,你不能指定上下文以外的 src 路径(例如 CPoVJerAFKrO[file 是不管用
的)。
ENTRYPOINT
设置一个于容器启动时运行的可执行文件(以及默认参数)。任何 CMD 指令或 docker
run 命令中镜像名称之后的参数,将作为参数传给这个可执行文件。 ENTRYPOINT 指令通
常用于提供“启动”脚本,目的是在解析参数之前,对变量和服务进行初始化。
ENV
设置镜像内的环境变量。这些变量可以被随后的指令引用。例如:
...
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
...
在镜像中这些变量仍然可用。
Docker基本概念 | 39
EXPOSE
向 Docker 表示该容器将会有一个进程监听所指定的端口。提供这个信息的目的是用
于连接容器(参见 4.4 节)或在执行 docker run 命令时通过 -P 参数把端口发布开来;
EXPOSE 指令本身并不会对网络有实质性的改变。
FROM
设置 Dockerfile 使用的基础镜像;随后的指令皆执行于这个镜像之上。基础镜像以“镜
像:标签”(IMAGE:TAG)的格式表示(例如 debian:wheezy)。如果省略标签,那么就被
视为最新(latest),但我强烈建议你一定要给标签设置为某个特定版本,以免出现任
何意想不到的事情。 FROM 必须为 Dockerfile 的第一条指令。
MAINTAINER
把镜像中的“作者 ”元数据设定为指定的字符串。可以通过 docker inspect -f
{{.Author}} IMAGE 这个命令来查看该信息。这个指令通常用于设置镜像维护者的姓名
和联系方式。
ONBUILD
指定当镜像被用作另一个镜像的基础镜像时将会执行的指令。对于处理一些将要添加到
子镜像的数据,这个指令将会非常有用(例如,把代码从一个已选定的目录中复制出
来,并在执行构建脚本时使用它)。
RUN
在容器内执行指定的指令,并把结果保存下来。
USER
设置任何后续的 RUN、 CMD 或 ENTRYPOINT 指令执行时所用的用户(用户名或 UID)。请
注意, UID 在主机和容器中是相同的,但用户名则可能被分配到不同的 UID,导致设置
权限时变得复杂。
VOLUME
指定为数据卷的文件或目录。如果该文件或目录已经在镜像中存在,那么当容器启动
时,它就会被复制至这个卷。如果提供了多个参数,那么就会被解释成多个数据卷。出
于对可移植性和安全性的考虑,你不能在 Dockerfile 中指定数据卷将会使用的主机目
录。更多相关信息参见 4.5 节。
WORKDIR
对任何后续的 RUN、 CMD、 ENTRYPOINT、 ADD 或 COPY 指令设置工作目录。这个指令可多次
使用。支持使用相对路径,按上次定义的 WORKDIR 解析。

21、docker port 容器ID 查看被 Docker 分配的端口。

22、查看帮助信息在命令之后加上 --help 选项,或者通过使用 docker help 命令

23、docker attach [OPTIONS] CONTAINER
attach 命令允许用户查看容器内的主进程,或与它进行交互。例如:
$ ID=$(docker run -d debian sh -c "while true; do echo 'tick'; sleep 1; done;")
$ docker attach $ID
tick
tick


docker create从镜像创建容器,但不启动它
docker cp在容器和主机之间复制文件和目录。
docker exec在容器中运行一个命令
docker kill使容器立即退出、送的信号可以通过 -s 选项指定。该命令会返回容器的 ID。
例如:
$ ID=$(docker run -d debian bash -c \
"trap 'echo caught' SIGTRAP; while true; do sleep 1; done;")
$ docker kill -s SIGTRAP $ID
e33da73c275b56e734a4bbbefc0b41f6ba84967d09ba08314edd860ebd2da86c
$ docker logs $ID
caught
$ docker kill $ID
e33da73c275b56e734a4bbbefc0b41f6ba84967d09ba08314edd860ebd2da86c


docker pause 暂停容器内的所有进程。

docker unpause 命令重启。
docker restart 重新启动一个或多个容器。 -t 指定一个等待时间(倒计时)


docker rm删除一个或多个容器 docker rm 不会删除任何数据卷。 -f 参数可以用来删除运行中的容器,而 -v 参数会删除由容器创建的数据卷(只要它们不是绑定挂载,或正被其他容器使用)。
例如,要删除所有已停止的容器:
$ docker rm $(docker ps -aq)
b7a4e94253b3
e33da73c275b
f47074b60757

docker start 启动一个或多个已停止的容器。
docker stop 停止(但不删除)一个或多个容器。对容器执行 docker stop 后,它的状态将转变为
“已退出”。 -t 指定一个等待时间(倒计时)

从容器分离
如果你正连接到一个 Docker 容器,无论容器是以交互模式启动,还是通过
使用 docker attach,当你试图以 CTRL-C 断开时,容器也会同时停止。但
如果使用 CTRL-P CTRL-Q 的话,就可以从容器分离,而不会停止容器。
这个方法只有在附有 TTY 的交互模式下才有效(即同时使用了 -i 和 -t
选项)。

docker info 打印 Docker 系统和主机的各种信息。


docker help 把一个子命令作为参数,打印有关该子命令的使用方法和帮助信息。相当于运行命令时
提供 --help 参数。


docker version 打印 Docker 客户端和服务器版本


docker events 打印守护进程的实时事件。键入 Ctrl-C 退出。

docker logs 输出容器的“日志”,也就是曾经输出到容器中的 STDERR 或 STDOUT 的内容。更多有关

docker port 把容器作为参数,列出它的端口映射信息


docker ps 提供关于当前容器的高阶信息

 -a 参数,它可以用来获取所有容器的信息,而不仅仅是运行中的容器

-q 参数,它使得这个命令只返回容器的 ID


docker top 把容器作为参数,提供该容器内运行中进程的信息。

docker build
从 Dockerfile 建立镜像。


docker commit
从指定的容器创建镜像


docker export
将容器的文件系统中的内容以 tar 归档的格式导出,并输出到 STDOUT。生成的归档可以
通过 docker import 导入。请注意,它只会导出文件系统;任何元数据,如映射端口、
CMD 和 ENTRYPOINT 配置将会丢失。另外,数据卷也不会包含在导出归档中。你可以将这个命令与 docker save 作对比。


docker history
输出镜像中每个镜像层的信息。


docker images
列出所有本地镜像,


docker import
从一个含有文件系统的归档文件创建镜像,归档可以由 docker export 产生。归档可以
通过文件路径或 URL 指定,或者通过 STDIN 流导入(使用“-”参数)。命令的返回值
是新创建镜像的 ID 。可以通过提供仓库和标签名称来为镜像附加标签。要注意的是,
通过 import 生成的镜像只会有一个镜像层,并会失去所有的 Docker 配置信息,如已指
定为开放的端口和 CMD 指令的值。你可以将这个命令与 docker load 相比较。
下面的例子用先导出后导入的方法,将一个镜像原来所有的镜像层合为一个。
$ docker export 35d171091d78 | docker import - flatten:test
5a9bc529af25e2cf6411c6d87442e0805c066b96e561fbd1935122f988086009
$ docker history flatten:test
IMAGE CREATED CREATED BY SIZE COMMENT
981804b0c2b2 59 seconds ago 317.7 MB Imported from -
docker load
加载仓库,仓库以 tar 归档的形式从 STDIN 读入。仓库可以包含数个镜像和标签 。与
docker import 不同,该镜像还包含历史和元数据。适用的归档文件可以通过 docker
save 创建,这使得 save 和 load 能成为寄存服务器以外用于分发镜像及备份的方案。相
关例子参见 docker save。


docker rmi
删除指定的一个或多个镜像。


docker save
把指定的镜像或仓库储存到 tar 归档,并输出到 STDOUT(如要写入文件,可以使用 -o
选项)。镜像可以用 ID 或 repository:tag 的方式指定。如果只指定了仓库名称,则该
仓库中的所有镜像将会被储存到归档,而不仅仅是带 latest 标签的镜像。与 docker
load 结合使用,可以用来分发或备份镜像。
例如:
$ docker save -o /tmp/redis.tar redis:latest
$ docker rmi redis:latest
Untagged: redis:latest
Deleted: 868be653dea3ff6082b043c0f34b95bb180cc82ab14a18d9d6b8e27b7929762c

docker tag
将镜像与一个仓库和标签名称关联。镜像可以通过 ID 或仓库加标签的方式指定(如未
提供标签名,默认为 latest )。如果没有为新名称提供标签,也默认为 latest 。
例如:
$ docker tag faa2b75ce09a newname ➊
$ docker tag newname:latest amouat/newname ➋
$ docker tag newname:latest amouat/newname:newtag ➌
$ docker tag newname:latest myregistry.com:5000/newname:newtag ➍
➊ 把 ID 为 faa2b75ce09a 的镜像添加到仓库 newname,因为没有指定标签名,所以标签
默认为 latest。
➋ 把 newname:latest 镜像添加到 amouat/newname 仓库,这一次也是使用 latest 标签。
这个名称的格式适用于把镜像推送到 Docker Hub,假设用户为 amouat。
➌ 与上一个命令一样,除了标签不再是 latest,而是 newtag。
➍ 将 newname:latest 镜像添加到 myregistry.com/newname 仓库,并使用 newtag 作为标签。
这个名称的格式适用于把镜像推送到位于 http://myregistry.com:5000 的寄存服务器。

docker login
在指定的寄存服务器进行注册或登录。如果未指定服务器,则假设为 Docker Hub。如
果有需要,程序将会要求你提供一些详细信息,你也可以通过参数提供这些信息。
docker logout
从 Docker 寄存服务器注销。如果未指定服务器,则假定为 Docker Hub。
docker pull
从寄存服务器下载指定的镜像。寄存服务器由镜像名称决定,默认为 Docker Hub。若
没有提供标签名,则下载标签为 latest 的镜像(如该标签可用)。通过 -a 参数可以下
载仓库中所有镜像。
docker push
将镜像或仓库推送到寄存服务器。如果没有指定标签,则仓库中的所有镜像都会推送到
服务器,而不仅仅是标记为 latest 的镜像。
Docker基本概念 | 55
docker search
列出 Docker Hub 上匹配搜索词的公共仓库。限制结果为最多 25 个仓库。过滤条件还可
以包括最低星级以及镜像是否自动生成。通常,在网站上搜索会是最便利的。
 

24、$ docker run -d -p 5000:5000 -v "$PWD"/app:/app identidock
-v "$PWD"/app:/app 参数把位于 /app 的 app 目录挂载到容器内。它将覆盖容器中 /app 目录
的内容 ,而且在容器内还可以进行读写(如果你不希望这样,也可以把数据卷挂载为只
读)。参数 -v 必须是绝对路径,因此在这个例子中,我们在当前的目录前加上 $PWD,不仅
可以节省键入的字数,还能提高可移植性。

25、docker run identidock whoami  返回它在容器内运行时的用户名称

26、cmd.sh环境切换配置文件

27、Compose  服务编排 包括启动、连接、更新和停止容器。使用 YAML 文件来存储不同容器的配置

up
启动所有在 Compose 文件中定义的容器,并且把它们的日志信息汇集一起。通常会使
用 -d 参数使 Compose 在后台运行。
build
重新建造由 Dockerfile 构建的镜像。除非镜像不存在,否则 up 命令不会执行构建的动
作,因此需要更新镜像时便使用这个命令。
ps
获取由 Compose 管理的容器的状态信息。
run
启动一个容器,并运行一个一次性的命令。被连接的容器会同时启动,除非用了 --nodeps 参数。
logs
汇集由 Compose 管理的容器的日志,并以彩色输出。
stop
停止容器,但不会删除它们。
rm
删除已停止的容器。不要忘记使用 -v 参数来删除任何由 Docker 管理的数据卷。
一个普通的工作流程以 docker-compose up -d 命令启动应用程序开始。 docker-compose
logs 和 ps 命令可以用来验证应用程序的状态,还能帮助调试。
修改代码后,先执行 docker-compose build 构建新的镜像,然后执行 docker-compose up
-d 取代运行中的容器。注意, Compose 会保留原来容器中所有旧的数据卷,这意味着即
使容器更新后,数据库和缓存也依旧在容器内(这很可能会造成混淆,因此要特别小心)。
如果你修改了 Compose 的 YAML 文件,但不需要构建新镜像,可以通过 up -d 参数使
Compose 以新的配置替换容器。如果想要强制停止 Compose 并重新创建所有容器,可以使
用 --force-recreate 选项来达到目的。
当你不再需要使用该应用时,可以执行 docker-compose stop 来停止应用程序。假设代码
没有变更,可以通过 docker-compose start 或 up 来重启相同的容器。使用 docker-compose
rm 彻底把容器删除。

28、

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值