Docker Starter

2017-01-17  本文已影响24人  DongGuangqing

Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问, 客户端和守护进程也可以运行再同一主机上,但这不是必须的。Docker命令行客户端也是类似的工作方式,但它通常通过Unix域套接字而不是TCP套接 字连接。

守护进程从客户端接受命令并管理运行在主机上的容器。

Docker Client-ServerDocker Client-Server

Docker 概念及相互作用

创建镜像

Dockerfile 中的命令

BUILD 命令:

RUN 命令:

格式:
CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
CMD ["param1","param2"] 提供给ENTRYPOINT的默认参数;
格式:
   ENTRYPOINT ["executable", "param1","param2"]
   ENTRYPOINT command param1 param2(shell中执行)。

ENTRYPOINT没有CMD的可替换特性,也就是你启动容器的时候增加运行的命令不会覆盖ENTRYPOINT指定的命令。 所以生产实践中我们可以同时使用ENTRYPOINT和CMD

ENTRYPOINT ["/usr/bin/rethinkdb"]
CMD ["--help"]

BUILD, RUN命令都有的命令:

Docker 容器管理

用于与镜像交互的命令

$ docker images  # 查看所有镜像.
$ docker import  # 从tarball创建镜像
$ docker build   # 通过Dockerfile创建镜像
$ docker commit  # 从容器中创建镜像
$ docker rmi     # 删除镜像
$ docker history # 列出镜像的变更历史

用于与容器交互的命令

$ docker create  # 创建一个容器,但不启动它
$ docker run     #  创建并启动一个容器
$ docker stop    # 停止容器
$ docker start   #  启动容器
$ docker restart # 重启容器
$ docker rm      # 删除容器
$ docker kill    #  给容器发送kill信号
$ docker attach  # 连接到正在运行的容器中
$ docker wait    # 阻塞直到容器停止为止
$ docker exec    # 在运行的容器中执行一条命令

检查容器的命令

$ docker ps      # 显示运行的容器
$ docker inspect # 显示容器信息(包括ip地址)
$ docker logs    # 获取容器中的日志
$ docker events  # 获取容器事件
$ docker port    # 显示容器的公开端口
$ docker top     # 显示容器中运行的进程
$ docker diff    # 查看容器文件系统中改变的文件
$ docker stats   # 查看各种纬度数据、内存、CPU、文件系统等

PS

docker run 选项:
--interactive (-i) - 将标准输入发送给进程
-tty (-t) - 告诉进程有终端连接。 这个功能会影响程序的输出和它如何处理Ctrx-C等信号。
--rm - 退出时删除镜像。

--name - 给容器命名, 否则它是一个随机容器
--env (-e)- 设置容器中的环境变量
--env-file - 从env-file中引入所有环境变量(同Linux下的source env-file 功能)

发布容器端口80和主机上的8080端口

$ docker run -p 8080:80 nginx

启动新的nginx容器,设置/var/log为卷,并映射到主机的/tmp目录下

$ docker run -v /tmp:/var/log nginx

参考地址

上一篇下一篇

猜你喜欢

热点阅读