xixi

docker

2017/11/11

容器

运行容器

1
docker run -itd twh/java

查看容器

1
docker ps -a

删除容器

1
docker rm $(docker container ls -a -q)

连接后台运行中的容器

1
docker attach twh/java

该命令有时候不方便,因为是同步的,若有多个用户attach到一个容器,一个窗口命令阻塞,其他窗口都无法执行

1
docker exec -it twh/java

导出容器

1
docker export 容器ID > java.tar.gz

镜像

查找镜像

1
docker search mysql -s 100

拉取镜像

1
docker pull mysql

删除镜像

1
docker rmi 镜像ID

保存镜像

1
docker save -o java.tar.gz twh/java

导入镜像

1
cat java.tar.gz|docker import - twh/java:v1.0.1

docker 私有仓库搭建

  1. 获取registry镜像

    1
    docker pull registry
  2. 运行镜像 -p端口映射 -v数据卷

    1
    docker run -d -p 5000:5000 -v /data/docker/registry:/tmp/registry registry
  3. 上传镜像

    1
    docker push 192.168.3.3:5000/java

容器互联

  1. 要实现容器互联,需要为容器指定一个方便记忆的名字,通过–name来指定

    1
    docker run -d -it --name test1 gitlab/gitlab-ce
  2. 启动容器

    1
    docker run -itd --name mysql -v /data/docker/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
  3. 连接容器 –link 容器名:别名

    1
    docker run -d -it --name test1 --link mysql:mysql gitlab/gitlab-ce
  4. 查看hosts和环境变量

    1
    cat /etc/hosts

Dockerfile

  1. 基础镜像信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 这里注释
    # 第一行必须指定基础镜像可以多个
    FROM centos
    # 维护者信息
    MAINTAINER tanwenhai tanwenhai@outlok.com
    # 镜像操作指令
    VOLUME /tmp
    ADD demo-0.0.1-SNAPSHOT.jar jar
    ENV JAVA_OPTS ""
    RUN yum -y install mysql
    EXPOSE 8080:8080
    # 容器启动指令
    CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
  2. 语法

  • FROM 指定基础镜像

    格式为FROM image或FROM image:tag

  • MAINTAINER 维护者信息

    MAINTAINER 用户名 邮箱

  • RUN 镜像操作

    run指令在build具有缓存

    RUN command 或RUN [“EXECUTABLE”, “param1”…] 后者使用exec运行

  • CMD 启动命令

    多个CMD命令只执行最后一个

    CMD 或RUN [“EXECUTABLE”, “param1”…] 使用exec运行
    CMD command param1 …
    CMD [“param1”, …] 提供给ENTERYPOINT的默认参数

  • EXPOSE 暴露端口

    EXPOSE port [port/protocol…]

  • ENV 环境变量

    ENV key value
    ENV key=value …

  • ADD 复制本地目录中的文件到容器中的dest

    ADD src dest

  • COPY 和ADD一样 dest不存在是会自动创建目录

    COPY src dest

  • ENTRYPOINT 容器启动后执行的命令

    ENTRYPOINT [“executable”, “param1”, …]

  • volume 创建数据卷

    VOLUME [“/data”]

  • USER 指定容器运行时的用户名或UID

    USER username

  • WORKDIR 为后续的RUN、CMD、ENTRYPOINT指定配置工作目录

    WORKDIR /APP

  1. 构建镜像

    -t 指定奖项的标签信息 用&&连接命令可以减少镜像大小

    docker build -t centos_test .

NetWork

  1. 创建网络

    1
    docker network create test_netework
  2. 查看网络信息

    1
    docker network inspect test_network
  3. 删除网络

    1
    docker network rm test_network
  4. 容器使用指定网络 –net

    1
    docker run -itd --net=test_network centos
  5. 连接容器 网络中所有主机除ip访问外,还可以直接用容器名(container-name)作为hostname相互访问

    1
    docker network connect test_network mysql
  6. 移除网络

    1
    docker network disconnet test_network mysql
CATALOG
  1. 1. 容器
    1. 1.0.1. 运行容器
    2. 1.0.2. 查看容器
    3. 1.0.3. 删除容器
    4. 1.0.4. 连接后台运行中的容器
    5. 1.0.5. 导出容器
  • 2. 镜像
    1. 2.0.1. 查找镜像
    2. 2.0.2. 拉取镜像
    3. 2.0.3. 删除镜像
    4. 2.0.4. 保存镜像
    5. 2.0.5. 导入镜像
  • 3. docker 私有仓库搭建
  • 4. 容器互联
  • 5. Dockerfile
  • 6. NetWork