美文网首页区块链入门AI-大数据Docker
【知识分享】3.docker run命令详解

【知识分享】3.docker run命令详解

作者: 笔名辉哥 | 来源:发表于2021-03-26 22:32 被阅读0次

    1. 参考

    (1)Docker run 命令参数及使用
    https://blog.csdn.net/luolianxi/article/details/107169954
    (2)Docker run 命令[简洁清爽版]
    https://www.runoob.com/docker/docker-run-command.html
    (3)docker run官网说明
    https://docs.docker.com/engine/reference/commandline/run/
    (4)【知识分享】Docker 命令大全
    https://www.jianshu.com/p/7fa8e918768e
    (5)docker镜像市场
    https://hub.docker.com/

    语法

    #运行示例
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  
    #运行docker内命令
    docker run -it IMAGE java -version
    

    OPTIONS说明:

    中文说明:

    --add-host list                 添加自定义主机到ip映射(书写格式为:主机:ip)
    -a, --attach list               附加到STDIN、STDOUT或STDERR上
    --blkio-weight uint16           Block IO (相对权重),取值10到1000之间,0为禁用(默认0)
    --blkio-weight-device list      Block IO weight (相对于设备的权重) (默认为数组的形式)
    --cap-add list                  添加Linux功能
    --cap-drop list                 删除Linux功能
    --cgroup-parent string          容器的可选父级对照组项
    --cidfile string                将容器ID写入文件
    --cpu-period int                限制CPU CFS(完全公平调度程序)周期
    --cpu-quota int                 限制CPU CFS(完全公平的调度程序)上限
    --cpu-rt-period int             限制CPU运行时周期(以微秒为单位)
    --cpu-rt-runtime int            限制CPU实时运行时间(以微秒为单位)
    -c, --cpu-shares int            CPU 共享 (相对权重的设定)
    --cpus decimal                  设定cpu的数量
    --cpuset-cpus string            允许执行的cpu (0-3,0,1)
    --cpuset-mems string            允许执行的MEMs (0-3,0,1)
    -d, --detach                    在后台运行容器并打印容器ID
    --detach-keys string            覆盖分离容器的键序列
    --device list                   向容器添加主机设备
    --device-cgroup-rule list       向 cgroup 允许的设备列表中添加一个或多个规则
    --device-read-bps list          限定设备的读取速率(单位: byte/s)(默认为 [])
    --device-read-iops list         限定设备的读取速率(单位:IO/s)(默认为 [])
    --device-write-bps list         限定设备的写入速率(单位: byte/s)(默认为 [])
    --device-write-iops list        限定设备的写入速率(单位:IO/s)(默认为 [])
    --disable-content-trust         跳过镜像验证(默认为 true)
    --dns list                      设置自定义DNS服务器
    --dns-option list               设置DNS选项
    --dns-search list               设置自定义的DNS搜索域
    --entrypoint string             覆盖镜像的默认入口点
    -e, --env list                  设置环境变量
    --env-file list                 读取环境变量内容
    --expose list                   公开一个端口或多个端口
    --group-add list                添加其他要加入的组
    --health-cmd string             命令运行以检查健康
    --health-interval duration      运行检查之间的时间(ms|s|m|h)(默认为 0s)
    --health-retries int            连续的失败需要报告不健康
    --health-start-period duration  启动健康重试倒计时前容器初始化的启动周期(ms|s|m|h)(默认为 0s)
    --health-timeout duration       健康检查运行情况的最大时间值 格式为:(ms|s|m|h) (默认 0s)
    --help                          打印出使用情况
    -h, --hostname string           定义容器主机名
    --init                          在容器中运行初始化,以转发信号并获取进程
    -i, --interactive               即使没有连接,也保持STDIN开放
    --ip string                     设定容器的 IPv4 地址 (例如,192.168.155.139)
    --ip6 string                    设定IPv6地址(例如,2001:db8::33)
    --ipc string                    使用IPC模式
    --isolation string              容器隔离技术
    --kernel-memory bytes           内核内存限制
    -l, --label list                在容器上设置元数据
    --label-file list               在以行分隔的标签文件中读取
    --link list                     向另一个容器添加链接
    --link-local-ip list            容器 IPv4/IPv6 链接本地地址
    --log-driver string             设定容器的日志驱动
    --log-opt list                  设定日志驱动器选项
    --mac-address string            配置容器MAC地址(例如,92:d0:c6:0a:29:33)
    -m, --memory bytes              设定内存限额
    --memory-reservation bytes      内存软限制
    --memory-swap bytes             交换限制等于内存加上交换:'-1',以启用无限交换
    --memory-swappiness int         优化容器内存交换 (0 到 100) (默认为 -1)
    --mount mount                   将文件系统挂载附加到容器
    --name string                   为容器指定一个名称
    --network string                将容器连接到网络
    --network-alias list            为容器连接的网络添加别名
    --no-healthcheck                禁止任何容器指定 HEALTHCHECK
    --oom-kill-disable              禁止OOM事件被杀死
    --oom-score-adj int             优化主机的OOM事件 ,参数范围 (-1000 到 1000)
    --pid string                    设定PID命名
    --pids-limit int                优化容器pid限制(如果设置-1则为无限制)
    --privileged                    赋予容器扩展的权限
    -p, --publish list              将容器的端口发布到主机
    -P, --publish-all               将所有公开的端口发布到随机端口
    --read-only                     将容器的根文件系统挂载为只读(后面会详细讲到)
    --restart string                配置容器的重启策略,当容器退出时重新启动(默认为“no”)
    --rm                            当容器退出时自动移除这个容器
    --runtime string                使用容器的运行时
    --security-opt list             指定docker启动的安全项
    --shm-size bytes                /dev/shm 的大小(这个可以使其容量进行动态的扩展)
    --sig-proxy                     设置代理接收京城信号 (默认为 true)
    --stop-signal string            停止容器的信号 (默认为 "SIGTERM")
    --stop-timeout int              设置超时停止容器(以秒为单位)
    --storage-opt list              设定容器的存储驱动程序选项
    --sysctl map                    指定系统控制项 (默认为 map[] 的格式)
    --tmpfs list                    挂载tmpfs目录
    -t, --tty                       为当前容器分配一个客户端
    --ulimit ulimit                 启动需要限制的项(默认为数组的形式)
    -u, --user string               用户名或UID(格式为: <name|uid>[:<group|gid>])
    --userns string                 使用用户名称空间
    --uts string                    使用UTS名称空间
    -v, --volume list               绑定安装卷(关于容器卷,在Docker容器数据卷中会具体的讲解)
    --volume-driver string          容器的可选卷驱动程序
    --volumes-from list             指定容器装载卷
    -w, --workdir string            容器内的工作目录
    

    更多说明参考官网:https://docs.docker.com/engine/reference/commandline/run/

    启动参数

    格式:docker run <选项> <容器名> <镜像:标签>

    $ sudo docker run -d \
    --name gitlab \
    --hostname 192.168.10.30 \
    -p80:80 -p443:443 -p22:22 \
    --restart unless-stopped \
    -v /home/sbw/qj/docker/gitlab/config:/etc/gitlab \
    -v /home/sbw/qj/docker/gitlab/data:/var/opt/gitlab \
    -v /home/sbw/qj/docker/gitlab/logs:/var/log/gitlab \
    twang2218/gitlab-ce-zh:11.1    #指定镜像
    e890b9c7fe670b770276a0f85c0f749e5556ef6ec8d117bf4bb33e0ca1ab3335
    ~/qj/docker/gitlab$ docker ps
    CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                   PORTS                                                               NAMES
    e890b9c7fe67        twang2218/gitlab-ce-zh:11.1   "/assets/wrapper"   2 minutes ago       Up 2 minutes (healthy)   0.0.0.0:2222->22/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp   gitlab
    
    

    说明:

    -d 后台启动,打印容器id
    -p 8080:80 将宿主机的端口映射至容器暴露的端口
    --name gitlab 设置容器名称为gitlab
    --restart unless-stopped 设置容器重启策略
    Docker容器的重启策略:
    no 默认策略,在容器退出时不重启容器
    on-failure 在容器非正常退出时(退出状态非0),才会重启容器
    on-failure:3 在容器非正常退出时重启容器,最多重启3次
    always 在容器退出时总是重启容器
    unless-stopped 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    --hostname 192.168.10.30 设置主机名或域名
    -v 挂载目录至宿主机,将gitlab的配置文件、数据文件、log文件的目录映射到本地目录中

    实例说明

    $ docker run -it --rm ubuntu:18.04 bash
    
    root@e7009c6ce357:/# cat /etc/os-release
    NAME="Ubuntu"
    VERSION="18.04.1 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.1 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    

    参数说明:
    -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
    --rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
    ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。
    bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash

    相关文章

      网友评论

        本文标题:【知识分享】3.docker run命令详解

        本文链接:https://www.haomeiwen.com/subject/zpwshltx.html