docker: 从docker图标可以看到是一个鲸鱼背着很多像集装箱一样的东西,每一个集装箱里面装的就是我们写的代码及运行环境,无论把集装箱放到哪里,都可以直接使用运行
教程:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。容器是完全使用沙箱机制,更重要的是容器性能开销极低。
优点: 1、快速,一致地交付您的应用程序。 --开发人员可以通过docker快速的交付整体的代码和所需的运行环境 2、响应式部署和扩展。 --可以部署在开发人员本机、虚拟机、测试环境等 3、在同一硬件上运行更多工作负载。 --同一台物理机或虚拟机可以运行多个项目 使用: docker run ubuntu:15.10 /bin/echo "Hello world" 各个参数解析: docker: Docker 的二进制执行文件。 run: 与前面的 docker 组合来运行一个容器。 ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 /bin/echo "Hello world": 在启动的容器里执行的命令 以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在 容器里执行 bin/echo "Hello world",然后输出结果。 交互式使用: 我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力: docker run -i -t ubuntu:15.10 /bin/bash 各个参数解析: -t: 在新容器内指定一个伪终端或终端。 -i: 允许你对容器内的标准输入 进行交互。 我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。 启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
输出:2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中,我们没有看到期望的 "hello world",而是一串长字符,这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。 首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:
docker ps
输出:
CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。 COMMAND: 启动容器时运行的命令。 CREATED: 容器的创建时间。 STATUS: 容器状态。 状态有7种: created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcpudp)。 NAMES: 自动分配的容器名称。
在宿主主机内使用 docker logs 命令,查看容器内的标准输出: docker logs 2b1b7a428627 停止容器 docker stop <容器 ID> 停止的容器可以通过 docker restart 重启 docker restart <容器 ID> 容器的使用: 获取镜像: docker pull 创建并进入到容器内: docker run -it ubuntu /bin/bash
参数说明: -i: 交互式操作。 -t: 终端。 ubuntu: ubuntu 镜像。 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 启动已停止运行的容器 docker ps -a docker start <container_id> 后台运行容器 docker run -itd --name <container_name> ubuntu /bin/bash 注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec 进入容器 在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入: docker attach : 使用此方式进入容器后,退出时会到时容器停止 docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。 更多参数说明请使用 docker exec --help 命令查看。 导出和导入容器 导出: docker export [container_id] > test.tar 导出容器 ID 快照到本地文件 test.tar。 导入: cat docker/test.tar | docker import - test:v1 此外,也可以通过指定 URL 或者某个目录来导入,例如: docker import http://example.com/exampleimage.tgz example/imagerepo 删除容器 docker rm -f <container id> 此命令可以清理掉所有处于终止状态的容器:docker container prune 示例运行一个 web 应用 1.docker pull training/webapp 2.docker run -d -P training/webapp python app.py 参数说明: -d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到我们使用的主机上。 3.查看 WEB 应用容器 使用 docker ps 来查看我们正在运行的容器: docker ps CONTAINER ID IMAGE COMMAND ... PORTS d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp 这里多了端口信息。 PORTS 0.0.0.0:32769->5000/tcp 4.我们也可以通过 -p 参数来设置不一样的端口: docker run -d -p 5000:5000 training/webapp python app.py 容器内部的 5000 端口映射到我们本地主机的 5000 端口上。 5.网络端口查看的快捷方式 docker port <container id> 输出:5000/tcp -> 0.0.0.0:5000 6.查看 WEB 应用程序日志 docker logs [ID或者名字] 可以查看容器内部的标准输出。 docker logs -f <container id> 参数: -f 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。 7.查看 WEB应用程序容器中的进程 docker top <container id 或 container name> 8.检查WEB 应用程序容器的状态信息 docker inspect <container id 或 container name>