docker 学习 1. Docker 容许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。 输出Hello world docker run ubuntu:15.10 /bin/echo "Hello world" 以上命令完整的意思能够解释为:Docker 以 ubuntu15.10 镜像建立一个新容器,而后在容器里执行 bin/echo "Hello world",而后输出结果。 2.运行交互式的容器 咱们经过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力 docker run -i -t ubuntu:15.10 /bin/bash 各个参数解析: -t:在新容器内指定一个伪终端或终端。 -i:容许你对容器内的标准输入 (STDIN) 进行交互。 此时咱们已进入一个 ubuntu15.10系统的容器 咱们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表 咱们能够经过运行exit命令或者使用CTRL+D来退出容器。 3. 启动容器(后台模式) 使用如下命令建立一个以进程方式运行的容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 在输出中,咱们没有看到指望的"hello world",而是一串长字符 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63 这个长字符串叫作容器ID,对每一个容器来讲都是惟一的,咱们能够经过容器ID来查看对应的容器发生了什么。 首先,咱们须要确认容器有在运行,能够经过 docker ps 来查看 CONTAINER ID:容器ID NAMES:自动分配的容器名称 4. 在容器内使用docker logs命令,查看容器内的标准输出 根据容器 id查看容器内部的输出 docker logs 2b1b7a428627 根据容器 name查看容器内部的输出 docker logs amazing_cori 5. 中止容器 docker stop 容器ID / 容器名称 6. 查看硬件使用率 docker stats 7.运行一个web应用 前面咱们运行的容器并无一些什么特别的用处。 接下来让咱们尝试使用 docker 构建一个 web 应用程序。 咱们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。 docker pull training/webapp # 载入镜像 docker run -d -P training/webapp python app.py #运行一个容器 参数说明: -d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到咱们使用的主机上。 Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。 这时咱们能够经过浏览器访问WEB应用 咱们也能够经过 -p 参数来设置不同的端口: docker run -d -p 5000:5000 training/webapp python app.py 容器内部的 5000 端口映射到咱们本地主机的 5000 端口上。 8.网络端口的快捷方式 经过 docker ps 命令能够查看到容器的端口映射,docker 还提供了另外一个快捷方式 docker port,使用 docker port 能够查看指定 (ID 或者名字)容器的某个肯定端口映射到宿主机的端口号。 上面咱们建立的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar。 我可使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 来查看容器端口的映射状况。 docker port bf08b7f2cd89 9. 查看 WEB 应用程序日志 docker logs [ID或者名字] 能够查看容器内部的标准输出。 docker logs -f 44e91ae4f916 image 10 .查看WEB应用程序容器的进程 docker top 44e91ae4f916 11. 检查 WEB 应用程序 使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。 docker inspect 44e91ae4f916 12. docker ps -l 查询最后一次建立的容器: 13. 移除WEB应用容器 咱们可使用 docker rm 命令来删除不须要的容器 删除容器时,容器必须是中止状态,不然会报以下错误 Error response from daemon: You cannot remove a running container xx ,Stop the container before attempting removal or force remove 14. Docker 镜像使用 当运行容器时,使用的镜像若是在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。 下面咱们来学习: 一、管理和使用本地 Docker 主机镜像 二、建立镜像 15. 列出镜像列表 咱们可使用 docker images 来列出本地主机上的镜像。 16. 各个选项说明: REPOSITORY:表示镜像的仓库源 TAG:镜像的标签 IMAGE ID:镜像ID CREATED:镜像建立时间 SIZE:镜像大小 同一仓库源能够有多个 TAG,表明这个仓库源的不一样个版本,如ubuntu仓库源里,有15.十、14.04等多个不一样的版本,咱们使用 REPOSITORY:TAG 来定义不一样的镜像。 因此,咱们若是要使用版本为15.10的ubuntu系统镜像来运行容器时,命令以下: docker run -t -i ubuntu:15.10 /bin/bash 若是要使用版本为14.04的ubuntu系统镜像来运行容器时,命令以下: docker run -t -i ubuntu:14.04 /bin/bash 17. 获取一个新的镜像 当咱们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。若是咱们想预先下载这个镜像,咱们可使用 docker pull 命令来下载它。 docker pull ubuntu:13.10 18. 查找镜像 咱们能够从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/ 咱们也可使用 docker search 命令来搜索镜像。好比咱们须要一个httpd的镜像来做为咱们的web服务。咱们能够经过 docker search 命令搜索 httpd 来寻找适合咱们的镜像。 NAME:镜像仓库源的名称 DESCRIPTION:镜像的描述 OFFICIAL:是否docker官方发布 19. 拖取镜像 咱们决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。 下载完成后,咱们就可使用这个镜像了。 docker run httpd 20. 建立镜像 当咱们从docker镜像仓库中下载的镜像不能知足咱们的需求时,咱们能够经过如下两种方式对镜像进行更改。 1.从已经建立的容器中更新镜像,而且提交这个镜像 2.使用 Dockerfile 指令来建立一个新的镜像 在运行的容器内使用 mkdir create a dir 在完成操做以后,输入 exit命令来退出这个容器。 此时ID为e218edb10161的容器,是按咱们的需求更改的容器。咱们能够经过命令 docker commit来提交容器副本。 docker commit -m="has update" -a="gaocng" cff94d57f05d gaocong/ubuntu:v1 21. 构建镜像 咱们使用命令 docker build , 从零开始来建立一个新的镜像。为此,咱们须要建立一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建咱们的镜像。 FROM centos:6.7 MAINTAINER Fisher "71849@qq.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 每个指令都会在镜像上建立一个新的层,每个指令的前缀都必须是大写的。 第一条FROM,指定使用哪一个镜像源 RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。 而后,咱们使用 Dockerfile 文件,经过 docker build 命令来构建一个镜像。 docker build -t runoob/centos:6.7 . 参数说明: -t :指定要建立的目标镜像名 . :Dockerfile 文件所在目录,能够指定Dockerfile 的绝对路径 使用docker images 查看建立的镜像已经在列表中存在,镜像ID为860c279d2fec 后台运行本身构建的镜像 docker run -d -p 22:22 gaocong/centos:7 22 .容器命名 当咱们建立一个容器的时候,docker 会自动对它进行命名。另外,咱们也可使用 --name 标识来命名容器,例如: 23. 容器IP的查方法 docker inspect 容器ID或容器名 |grep '"IPAddress"' 24. 使用docker exec进入Docker容器 docker exec -it 775c7c9ee1e1 /bin/bash