• Docker


    镜像操作:

    docker login docker.io

    登陆docker

    docker search (image-name)

    查找

    docker pull (image-name)

    从远端拉取

    docker images (本地镜像)

    列出本地镜像

    docker tag IMAGEID 别名

    命别名

    docker push 镜像

    提交镜像

    删除一个镜像:

    docker rmi imageID

    通常删除能直接删除没有运行的镜像,但是如果有容器运行这个镜像,删除时可以加-f ,也就是docker rmi -f image-ID强制删除

    容器操作命令:

    docker ps -a 所有容器列表

    docker run 运行

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    OPTIONS说明:

    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    -d: 后台运行容器,并返回容器ID;

    -i: 以交互模式运行容器,通常与 -t 同时使用;

    -P: 随机端口映射,容器内部端口随机映射到主机的端口

    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    --name="nginx-lb": 为容器指定一个名称;

    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    -h "mars": 指定容器的hostname;

    -e username="ritchie": 设置环境变量;

    --env-file=[]: 从指定文件读入环境变量;

    --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

    -m :设置容器使用内存最大值;

    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    --link=[]: 添加链接到另一个容器;

    --expose=[]: 开放一个端口或一组端口;

    --volume , -v: 绑定一个卷
    IMAGE 要运行的镜像
    COMMAND 启动容器时要运行的命令

    docker start/stop/restrat

    docker rm (-f)

    docker exec/commit

    docker load/save 载入/导出保存 尽量不要用IMAGEID打包

    docker log (-f)

    docker stats

    docker export 导出

    Dockerfile规则:

    格式:

    #为注释

    指令(大写) 内容(小写)

    指令的大小写并不敏感,但是约定

    Docker编排是按照顺序执行Dockerfile的指令合集的

    第一个非注释命令一定是FROM ,指定base image,后续命令以这个镜像为基准运行

    基准镜像必须是任何可用的镜像文件,docker build将会先找本地images再搜索网络镜像仓库里的镜像文件并下载至本地。

    镜像仓库需要注册,设置在/etc/docker/daemon.json中

    {
    "registry-mirrors": ["https://fl791z1h.mirror.aliyuncs.com"]
    }

    Dockerfile重要的几个指令:

    USER/WORKDIR

    docker build -t nginx:user-workdir

    ADD/EXPOSE

    add添加本地文件到镜像

    FROM nginx:1.12.2
    ADD index.html /usr/share/nginx/html
    EXPOSE 80
    docker build -t nginx:add_expose
    docker run -P -d nginx:add_expose

    RUN/ENV

    FROM alpine:3.11.5
    ENV product A
    RUN touch /opt/a.txt
    docker build -t alpine:run_env
    docker run -it alpine:run_env /bin/sh

    CMD/ENTRYPOINT

    都是容器启动的时候运行的
    CMD ['/OPT/START.SH']
    ENTRYPOINT ['/OPT/START.SH']

    docker run -it alpine
    docker run -it alpine /bin/bash
    都不指定/bin/bash时,两者一样

    CMD

    支持三种格式

      CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;

      CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;

      CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;

    指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。

    如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

    ENTRYPOINT

    两种格式:

      ENTRYPOINT ["executable", "param1", "param2"]

      ENTRYPOINT command param1 param2(shell中执行)。

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

    每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效

    从上面的说明,我们可以看到有两个共同点:

    都可以指定shell或exec函数调用的方式执行命令;
    当存在多个CMD指令或ENTRYPOINT指令时,只有最后一个生效;
    而它们有如下差异:

          差异1:CMD指令指定的容器启动时命令可以被docker run指定的命令覆盖,而ENTRYPOINT指令指定的命令不能被覆盖,而是将docker run指定的参数当做ENTRYPOINT指定命令的参数。

          差异2:CMD指令可以为ENTRYPOINT指令设置默认参数,而且可以被docker run指定的参数覆盖;

    Dockerfile尽可能不要分太多行,尽可能&&

    docker的网络模型:

    NAT:默认

    None:docker run --net=none

    Host:docker run --net=host

    container网络(联合网络)docker run --net=container:(container_id)

  • 相关阅读:
    Windows环境下OpenLDAP安装配置
    jobcenter在Windows下连携LDAP
    OpenLDAP搭建
    Go 函数 #3
    Go 数组/多维数组/切片/map #2
    Go内置类型/变量/常量 #1
    git常用命令
    makefile基础_1
    kubernete的service
    配置开发环境
  • 原文地址:https://www.cnblogs.com/lw-2019forlinuxpython/p/14646060.html
Copyright © 2020-2023  润新知