## docker 使用笔记

docker 使用笔记

docker 创建容器

  • docker create -it ubuntu:latest 创建一个ubuntu容器,该容器没有启动
  • 可以使用 docker start 命令来启动

docker 创建并启动容器

  • docker run ubuntu /bin/echo 'hello world' 基于镜像新建并启动容器,输出 ‘hello world’ 后容器自动终止

创建容器时 docker 在后台运行的标准操作是

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载。
  2. 利用镜像创建并启动一个容器。
  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层。
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去。
  5. 从地址池配置一个IP地址给容器。
  6. 执行用户指定的应用程序。
  7. 执行完毕后容器被终止。

启动一个 ubuntu bash终端,允许用户进行交互

  • docker run -t -i ubuntu /bin/bash
  • 其中 -t 选项让docker分配一个伪终端并绑定到容器的标准输入上
  • -i 表示容器的标准输入保持打开。
  • ctrl+d 或 exit 命令退出
使用 -d 参数让docker运行的容器在后台以守护态 (Daemonized) 形式运行

查看后台运行的容器

  • docker ps 命令查看后台运行的容器。
  • docker logs 命令获取容器的输出信息 docker logs 容器ID

终止容器

  • docker stop 命令终止一个运行的容器 docker stop 容器ID
  • 可以使用 docker ps -a -q 命令看到处于终止状态的容器ID信息,处于终止状态的容器,可以使用 docker start 重新启动
  • docker restart 容器ID 可以关闭并启动一个容器
  • 使用 nsenter 工具进入容器

进入容器

  • 可以使用 docker attach 进入容器(后台运行)中。
  • 但是使用 attach 命令有时候并不方便。多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
docker 1.3版本起 提供了更加方便的工具 exec
  • 可以直接在容器运行命令。
  • docker exec -ti 容器ID /bin/bash

使用 ps -ef 可以看到容器中运行的进程

删除容器

  • 可以使用 docker rm 删除处于终止状态的容器。
  • docker rm -f 容器ID 强制删除一个运行中的容器。
  • -f 强制删除 -l 删除容器链接 -v 删除容器挂载的数据卷。

导出容器

  • 导出容器是指导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态,都可以使用 docker export 命令
  • 格式 docker export CONTAINER

导入容器

  • 导入文件可以使用 docker import 命令导入,成为镜像。
  • 例如 cat test_for_run.tar | docker import - test/ubuntu:v1.0

docker 网络基础配置

  • docker在运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数来指定端口映射。
  • -P (大写)标记时,docker会随机映射一个49000~49900的端口至容器内部开放的网络端口
  • -p (小写)则可以指定要映射的端口,且在一个指定端口上只可以绑定一个容器。支持格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort

查看映射端口配置

  • 使用 docker port 来查看当前映射端口配置

容器互联

  • 使用 --link 参数可以让容器之间安全的进行交互
  • docker run -d -P --name web --link db:db training/webapp python app.py 此时db容器和web容器建立互联关系。
  • –link参数格式为 --link name:alias ,其中name是要链接的容器名称,alias是这个连接的别名
使用env命令查看web容器的环境变量
  • docker run --rm --name web2 --link db:db tranining/webapp env

Dockerfile 创建镜像

  • dockerfile 使用 # 号注释

dockerfile分为四部分

  1. 基础镜像信息
  2. 维护者信息
  3. 镜像操作指令
  4. 容器启动时执行指令

指令

指令格式
  • 指令格式为 INSTRUCTION arguments, 指令包括 FROM MAINTAINER RUN 等
1. FROM
  1. FROM 第一条指令必须为 FROM 指令,同一个dockerfile创建多个镜像时,可以使用多个FROM指令(每个镜像一次)
  2. 格式为 FROM 或 FROM :
2. MAINTAINER
  • 格式为 MAINTAINER , 指定维护者信息
3. RUN
  • 格式为 RUN 或 RUN [‘executable’, ‘param1’, ‘param2’]。
  • 前者将在shell终端中运行命令,即 /bin/sh -c;后者则使用exec执行。指定使用其他终端可以通过第二种方式实现
  • 命令较长时使用\来换行
4. CMD
  • 支持三种格式
  1. CMD [‘executable’, ‘param1’, ‘param2’] 使用exec执行,推荐
  2. CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用
  3. CMD [‘param1’, ‘param2’] 提供给ENTRYPOINT的默认参数
  • 启动容器时执行的命令,每个dokcerfile只能有一条CMD命令,如指定多条命令,最后一条会被执行
5. EXPOSE
  • 格式为 EXPOSE […] 例 EXPOSE 22 80 443
  • 告诉dokcer服务器容器暴露的端口号,供互联系统使用。启动容器时需要使用 -P 或 -p 参数指定端口。
6. ENV
  • 格式为ENV 指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持。

创建镜像

  • 可以通过docker build命令来创建镜像
  • 格式 docker build [选项] 路径
  • 该命令将读取指定路径(包括子目录)的dockerfile,并将该路径下所有内容发送给docker服务器,由服务端来创建镜像。建议放置dockerfile的目录为空目录
  • 指定镜像标签信息使用 -t 选项
  • docker build -t build_repo/first_image /tmp/docker_builder/ 指定dockerfile所在路径为 /tmp/docker_builder/,并且希望生成镜像标签为 build_repo/first_image。

猜你喜欢

转载自blog.csdn.net/qq_39309714/article/details/85255155
今日推荐