Coup de Grace

得了得了,docker备忘

前些日子拿到了docker beta,放着不用实在浪费,还是先写一下docker基础备忘吧.

顺便pi cluster已经下单了~拿回来跑Kubernetes或者Spark都行了,想装满还差5块Pi 3和交换机.

基本命令就不提了,组合命令放在最后写上(因为fish不支持这样写…fish shell语法还没学..)

2017-05更新: 更新了我给同事分享基础语法的 md.


Dockerfile语法

FROM 
MAINTAINER
RUN
EXPOSE # 指定占用端口与连接多个容器
CMD # 只能有一个,接收数组
ENTRYPOINT # 不会被启动参数覆盖
WORKDIR 
ENV #环境变量
USER
VOLUME # 存储介质抽象
ADD # 文件复制,source可以是网络文件
COPY # 复制不会经过解压操作,源目录只能是 . 
ONBUILD # build过程中触发,可以完成一些脚本初始化操作

举个例子 3.3.9-jdk-8:

FROM openjdk:8-jdk

ARG MAVEN_VERSION=3.3.9
ARG USER_HOME_DIR="/root"

RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
  && curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \
    | tar -xzC /usr/share/maven --strip-components=1 \
  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

ENV MAVEN_HOME /usr/share/maven
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"

COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
COPY settings-docker.xml /usr/share/maven/ref/

VOLUME "$USER_HOME_DIR/.m2"

ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"]
CMD ["mvn"]

基础命令

images
rmi 

ps [-a]
rm

attach (exit问题)
exec (-it tt /bin/sh)

inspect
logs
port


build
pull(xx.com/author/tt)
tag
push
search

run
start 
stop

save image
load

import container
export

例如启动一个mysql

docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest


Compose

一组或者组成一个Service的一些容器的起停管控.

nginx:
    container_name : nginx
    image : nginx:1.11.4
    ports :
        - 443:443
    links :
        - registry:registry
    volumes:
        - /Users/Slahser/Documents/repository/compose/registry/nginx:/etc/nginx/conf.d

registry:
    container_name : registry
    image : registry:2.5.1
    ports:
        - 5000:5000
    volumes:
        - /Users/Slahser/Documents/repository/registry:/var/lib/registry

Container相关命令

# 删除所有已经停止的容器
docker rm $(docker ps -a -q)

# 容器运行
docker run --name tt -p 9003:80 -p 9023:22 -d -v /var/tt/files:/tt/files -v /var/tt/files2:/tt/files2 s1ahs3r/tt

Image相关命令

# 删除所有镜像
docker rmi $(docker images -q)

# 镜像build
docker build -t="s1ahs3r/dockerbase" .

# 镜像迁移 
docker save [容器名/ID] -o /path/to/backup.tar
docker load -i /path/to/backup.tar