第一本docker书笔记

  • docker run -i -t ubuntu /bin/bash

    • -i 保证容器中的STDIN是开启的
    • -t 为创建的容器分配一个伪tty终端,新容器从而能提供一个交互式shell
    • docker help run
    • 基于ubuntu镜像来创建容器
    • 在新容器中要运行 /bin/bash 命令
    • --restart=always
    • --restart=on-failure:5 由于某种错误导致容器停止运行后,会自动重新启动该容器最多5次
  • docker stop XXX

  • docker exec -d XXX touch /etc/new_config_file

    • 在容器的内部额外启动新进程:后台任务 或 交互式任务
    • 在XXX容器内部运行一个后台进程,执行的操作是touch
  • docker exec -it XXXX /bin/bash

    • 在XXX容器中启动一个打开shell的交互式任务
  • 本地镜像保存在 /var/lib/docker/containers

  • (基于已有的基础镜像)构建镜像

    • docker commit contiainerID repositoryName/containerName
    • docker build + Dockerfile
      • 执行步骤
        • Docker 从基础镜像运行一个容器
        • 执行一条指令,对容器做出修改
        • 执行类似docker commit的操作,提交一个新的镜像层
        • Docker再基于刚提交的镜像运行一个容器
        • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕
      • RUN
        • 在当前镜像中运行指定的命令,会创建一个新的镜像层,如果指令执行成功,会将此镜像层提交
        • 默认会在shell里使用命令包装器/bin/sh -c来执行
        • 有exec格式的RUN指令

基础命令

  • 检查容器的主机名

    • hostname
    • cat /etc/hosts
    • ip a
  • 镜像 & 容器

  • 常用命令1

    • docker create
      • 为指定的镜像创建可读可写层,构成了一个新的容器
      • 创建一个容器但不运行它
    • docker start
      • 为容器文件系统创建了一个进程隔离空间
      • 重新启动一个已停止的容器(docker restart 也可以)
    • docker attach
      • 重新附着到容器的会话上
    • docker run
      • 先是利用镜像创建了一个容器,然后运行这个容器
      • docker create和docker start两个命令的组合
    • docker ps
      • 列出所有运行中的容器
    • docker ps -a
      • 列出所有的容器,不管是运行的,还是停止的
    • docker images
      • 列出所有顶层(top-level)镜像
    • docker images -a
      • 列出了所有的镜像,也可以说是列出了所有的可读层
    • docker stop
    • docker kill
    • docker pause
    • docker rm
  • 常用命令2

    • docker info
      • 验证安装正确
    • docker pull
      • docker pull registry.docker-cn.com/library/centos:7
    • docker help
      • 查看所有命令
    • docker search
      • 查找在registry中的镜像
  • 常用命令3

    • 参考Docker退出容器不关闭容器的方法
    • ctrl + p + q 退出登录但不关闭镜像
    • docker attach ID 进入镜像
    • 使用docker start DOCKER-NAME启动容器,docker exec ... 之后做修改,exit退出,再进入容器上次修改还在
  • 常用命令4

    • 启动容器
      • docker run --name DOCKER_NAME -it -v /host_dir:/docker_dir IMAGE_NAME:TAG -p host_port:docker_port /bin/bash IMAGE_NAME顺序在-v之后
      • docker start DOCKER_NAME
      • docker exec -it DOCKER_NAME /bin/bash
    • 退出容器
      • exit
    • 删除容器
      • docker rm
    • 删除镜像
      • docker rmi
    • 编写启动命令
      • alias g2d='docker exec -i -t $(docker ps -l -q) /bin/bash'
      • vi /usr/bin/startDocker
docker start DOCKER-NAME
docker exec -it DOCKER-NAME /bin/bash

制作镜像

Dockerfile示例:

FROM docker-repository/os

ENV TZ Asia/Shanghai
ENV LANG en_US.UTF-8

RUN cd /etc/yum.repos.d && curl http://mirrors.163.com/.help/CentOS7-Base-163.repo > CentOS-Base.repo

RUN yum install -y vim wget git make cmake gcc gcc-c++ openssl openssl-devel libwebp-devel libwebp fontconfig.x86_64 fontconfig-devel.x86_64 crontabs.noarch valgrind.x86_64 valgrind-devel.x86_64 gdb net-tools supervisor sshpass

RUN yum install -y java
ENV JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre"

ADD XXX.tar.gz /usr/local
ARG PATH
ENV PATH=${PATH}:/usr/local/XXX/bin

执行脚本示例:

image="docker-repository/os/service:0.1"
docker build -t $image .

更改data-root目录

/etc/docker/daemon.json 文件追加 "data-root": "/data/docker"

彻底删除overlay2

  • 停止并删除所有容器
  • systemctl stop docker
  • docker system prune -a
  • rm -rf /var/lib/docker
  • systemctl start docker

参考

Docker入门教程:15个Docker基本命令及用法
docker的常用命令汇总
How to analyze disk usage of a Docker container

posted on 2018-08-05 23:14  chenguang9239  阅读(155)  评论(0编辑  收藏  举报