Docker实践基础

236 阅读3分钟

容器启动

  1. docker run -t -i -d -p 5000:5000 -v /src/webapp:/opt/webapp --name myServer --rm ubuntu:14.04 /bin/bash
  • -t :让docker分配一个伪终端并绑定到容器的标准输入上
  • -i : 让容器的标准输入保持打开状态
  • -d :让docker容器在后台以守护态(Daemonized)形式允许
  • -v : 创建一个数据券或者挂载一个本地已有的目录到容器中去作为数据券(-v /src/webapp:/opt/webapp 表示将主机的/src/webapp 目录挂载到/opt/webapp目录)
  • --rm : 默认容器退出时,容器内数据保留,如果想容器退出时,删除容器数据,则追加--rm 参数
  • --name:容器名字
  • -p : 宿主端口:容器端口 //多次使用-p 标记可以绑定多个端口
  • -p : 宿主ip:: 容器端口 // 本地主机自动分配一个端口映射到容器的指定端口
  • -p : 数组ip:数组端口:容器端口// 本地主机指定端口映射到容器的指定端口
  • /bin/bash : 表示容器的启动命令,类似的还有 java -jar 和 python app.py 等等;这个参数其实就是相当于启动一个虚拟操作系统之后,执行的命令。所以可以是 echo "fuck docker" 也可以是 ls 、env 等系统指令
  • --volumes-from: 挂载一个数据卷容器
  • --link name:alias , 其中name是要连接的容器名称,alias是这个连接的别名

数据卷容器

  1. docker run -it -v /dbdata --name dbdata ubuntu //创建一个数据卷容器dbdata ,并在其中创建一个数据卷挂载到 /dbdata
  2. docker run -it --volumes-from dbdata --name db1 ubuntu //其他容器使用--volumes-from来挂载dbdata容器中的数据卷
  3. docker run -it -d -P --name web --link dbdata:dbdata ubuntu // --link name:alias , 其中name是要连接的容器名称,alias是这个连接的别名

容器网路

  1. docker port 621afa078a1c 8889 //dokcer port 容器ID 容器port
  2. docker inspect 621afa078a1c //查看容器的详细信息

Dockerfile

## 第一步:必须指定基于的基础镜像
FROM ubuntu 
## 第二步:维护者信息
MAINTAINER docker_user nivelle
## 第三步:镜像操作指令
RUN echo "deb http:archive.ubuntu.com/ubuntu/ raring main universe" >> /etc
### 此条指令表示基于ubuntu父镜像,安装nginx 
RUN apt-get update && apt-get install -y nginx
ENV APP_VERSION 0.0.1
RUN echo "\ndaemo off;" >> /etc/nginx/nginx.conf
RUN echo crul -SL http://example.com/$APP_VERSION/method
EXPOSE 5900
## 第四步:容器启动时执行指令
CMD /usr/sbin/nginx
  1. RUN : 对镜像执行跟随命令,每运行一条RUN指令,镜像添加新的一层,并提交;该指令格式有两种 第一种 “bin/bash-c ” 第二种 RUN["/bin/bash","-c"."echo hello"]
  2. CMD: 指定运行容器时的操作命令;每个Dockerfile 只能有一条CMD命令。如果指定了多条只有最后一条会被执行,如果容器启动时指定了运行的命令,则会覆盖调CMD指定的命令;支持三种格式 1:CMD["executable","param1","param2"] 2: CMD command param1 param2 //提供需要交互的应用 3:CMD["param1","param2"] 提供给ENTRYPOINT 的默认参数
  3. EXPOSE: “声明”对外暴露的端口
  4. ENV : 指定一个环境变量 。可以被后续 RUN指令使用,并在容器运行时保持。通过 $key 来获取变量值
  5. ADD : 复制指定的 src 到 容器 dest
  6. COPY: 复制本地主机的 (Dockerfile所在目录的相对路径,文件或者目录)为容器中的
  7. ENTRYPOINT : 配置容器启动后执行的命令,并且不可被docker run 提供的参数覆盖。每个Dokcerfile中只能有一个ENTRYPOINT 时,只有最后一个生效。 格式1: ENTRYPOINT command param1 param2 格式2: ENTRYPOINT["executable","param1","param2"]
  8. VOLUME: 格式为 VOLUME["/data"] ,创建一个可以从本地主机或者其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据
  9. USER : 格式 为 USER daemon . 指定运行容器时的用户名或UID,后续的RUN 也会使用指定的用户
  10. WORKDIR: 格式为WORKDIR /path/to/workdir ; 为后续RUN 、CMD、ENTRYPOINT 指令配置工作目录
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
  1. ONBUILD : 格式为 ONBUILD[INSTRUCTION] ; 配置当所创建的镜像为其他新创建镜像的基础时,所执行的操作指令。

创建镜像

docker build -t imageTagName /Dockerfile path