精华内容
下载资源
问答
  • Docker run 命令参数

    2020-12-30 10:50:48
    Docker run 命令参数及使用 Docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: 01.[root@www ~]# docker run --help 02. 03.Usage: docker run ...

    Docker run 命令参数及使用说明


    Docker run :创建一个新的容器并运行一个命令

    语法

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]  
    

    [OPTIONS] 参数说明:

    --add-host list	               	添加自定义主机到ip映射(书写格式为:主机:ip)
    -a, --attach list	           	附加到STDINSTDOUTSTDERR--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			优化容器内存交换 (0100) (默认为 -1)
    --mount mount					将文件系统挂载附加到容器
    --name string 					为容器指定一个名称
    --network string				将容器连接到网络
    --network-alias list			为容器连接的网络添加别名
    --no-healthcheck				禁止任何容器指定 HEALTHCHECK
    --oom-kill-disable				禁止OOM事件被杀死
    --oom-score-adj int				优化主机的OOM事件 ,参数范围 (-10001000)
    --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			容器内的工作目录
    

    启动参数
    格式: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启动了了一个redis容器,而docker run参数有很多,由于时间太久,我已经忘记了当初的启动参数,也并没有使用docker-compose这样的编排工具。现在我如何进行重启,如何找回此前的启动命令?示例...

    5c1967c5325842cec010c6abd3e07965.gif

    如果有这样以一个场景。我使用docker run启动了了一个redis容器,而docker run的参数有很多,由于时间太久,我已经忘记了当初的启动参数,也并没有使用docker-compose这样的编排工具。现在我如何进行重启,如何找回此前的启动命令?

    示例

    使用docker run启动一个容器,

    docker run \

    --detach \

    --env REDIS_CONF=on \

    --env REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh \

    --env MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh \

    --env MAXCLIENTS_NUM=30 \

    --net=host \

    --env MAXMEMORY_SIZE=1024M \

    --publish 6379:6379 \

    --volume linuxea_volume \

    --name linuxea_redis \

    --tty --interactive \

    marksugar/redis:5.0.0

    I. docker COMMAND完整命令查看

    首先,我们查看启动的脚本参数和完整的命令

    使用 docker ps -a --no-trunc

    docker ps -a --no-trunc可以打印docker ps -a的隐藏部分,但是这并不能看到我们run的参数

    [root@LinuxEA-172_25_50_250 ~]# docker ps -a --no-trunc

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    c32bc1bba3a0f8d59e3bd96648838399287ee183ddbff1ca1293ccbc933c8ede marksugar/redis:5.0.0 "/Initialization.sh" 8 minutes ago Up 8 minutes linuxea_redis

    1d848a10149325e6fb46ef5fa0624812ab12f28263535720d79aa564a5551e45 marksugar/nginx_createrepo:v0.2 "entrypoint.sh" 13 days ago Up 13 days nginx_repo

    II. docker inspect

    此时,我们试图找回上述的docker run命令,使用docker inspect ,但是docker inspect打印的是json文件,我们需要挑选字段查看

    [root@LinuxEA-172_25_50_250 ~]# docker inspect -f "{{.Name}} {{.Path}} {{.Args}} {{.Config.Cmd}} {{.Config.Env}} {{.Config.Volumes}} {{.Config.Entrypoint}} {{.NetworkSettings.Networks}}" $(docker ps -a -q)

    /linuxea_redis /Initialization.sh [] [] [REDIS_CONF=on REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh MAXCLIENTS_NUM=30 MAXMEMORY_SIZE=1024M PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin RS_VSON=5.0.0 RS_USER=redis RS_VSON_URL=http://download.redis.io/releases/redis-5.0.0.tar.gz BATADIR=/usr/local/redis DATADIR=/data/redis DATALOG=/data/logs DATACIG=/etc/redis] map[linuxea_volume:{}] [/Initialization.sh] map[host:0xc420182000]

    /nginx_repo entrypoint.sh [] [] [USERNAME=marksugar FTPPASSWD=123 FTPDATA=/data/wwwroot SERVER_NAME=meftp.ds.com NGINX_PORT=80 WELCOME="welome to linuxea.com" PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin version=1.14.2 USER=www INSTALL_PATH=/usr/local WWWPATH=/data/wwwroot] map[/tmp/header.html:{} /data:{} /etc/localtime:{} /etc/nginx/nginx.conf:{} /etc/nginx/vhost:{} /tmp/footer.html:{}] [entrypoint.sh] map[host:0xc42044c000]

    这样的显示并不直观。好在我发现了rekcod和runlike这两个逆转docker run命令,参见本章介绍和使用。runlike更漂亮些

    III. rekcod

    借助rekcod打印出更易读的格式,docker inspect→docker run

    docker run从现有容器(via docker inspect)反向设计命令。

    rekcod可以将以下任何内容转换为docker run命令:

    容器ID /名称(rekcod将调用docker inspect)

    包含docker inspect输出的文件的路径

    原始JSON(docker inspect直接传递输出)

    每个docker run命令都可用于复制容器。

    这不是非常强大,但它应该涵盖所需的大多数参数。请参阅下面支持的字段

    传递容器ID /名称时,此模块docker inspect直接调用,运行它的用户也应该能够。

    5c1967c5325842cec010c6abd3e07965.gif

    开始安装

    install rekcod

    yum install npm -y

    npm i -g rekcod

    如果您只安装了Docker:

    $ docker pull nexdrew/rekcod

    $ alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod"

    或者你可以简单地运行它,不需要安装:

    $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod

    开始使用

    以使用linuxea_redis容器为例,rekcod linuxea_redis,如下:

    [root@LinuxEA-172_25_50_250 ~]# docker ps -qa|rekcod

    或者这样

    [root@LinuxEA-172_25_50_250 ~]# rekcod linuxea_redis

    docker run --name linuxea_redis --runtime runc -p 6379:6379/tcp --net host --restart no -h LinuxEA-Node172_25_50_250.cluster.com --expose 26379/tcp --expose 6379/tcp -e 'REDIS_CONF=on' -e 'REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh' -e 'MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh' -e 'MAXCLIENTS_NUM=30' -e 'MAXMEMORY_SIZE=1024M' -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' -e 'RS_VSON=5.0.0' -e 'RS_USER=redis' -e 'RS_VSON_URL=http://download.redis.io/releases/redis-5.0.0.tar.gz' -e 'BATADIR=/usr/local/redis' -e 'DATADIR=/data/redis' -e 'DATALOG=/data/logs' -e 'DATACIG=/etc/redis' -d -t -i --entrypoint "/Initialization.sh" marksugar/redis:5.0.0

    我将结果换行查看,并且进行启动[这里不得不说的是,在runlike中,可以使用-q自动换行.见下文]

    docker run --name linuxea_redis \

    -p 6379:6379/tcp \

    --net host \

    --restart no \

    -h LinuxEA-Node172_25_50_250.cluster.com \

    --expose 26379/tcp \

    --expose 6379/tcp \

    -e 'REDIS_CONF=on' \

    -e 'REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh' \

    -e 'MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh' \

    -e 'MAXCLIENTS_NUM=30' \

    -e 'MAXMEMORY_SIZE=1024M' \

    -e 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \

    -e 'RS_VSON=5.0.0' \

    -e 'RS_USER=redis' \

    -e 'RS_VSON_URL=http://download.redis.io/releases/redis-5.0.0.tar.gz' \

    -e 'BATADIR=/usr/local/redis' \

    -e 'DATADIR=/data/redis' \

    -e 'DATALOG=/data/logs' \

    -e 'DATACIG=/etc/redis' \

    -d -t -i --entrypoint "/Initialization.sh" marksugar/redis:5.0.0

    启动成功

    [root@LinuxEA-172_25_50_250 ~]# docker ps -a

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    492f6cdc159c marksugar/redis:5.0.0 "/Initialization.sh" 4 seconds ago Up 3 seconds linuxea_redis

    1d848a101493 marksugar/nginx_createrepo:v0.2 "entrypoint.sh" 13 days ago Up 13 days nginx_repo

    [root@LinuxEA-172_25_50_250 ~]# docker logs linuxea_redis

    [i] Start configuration /etc/redis

    [ok] /etc/redis/redis.conf config ready

    [ok] Start variable substitution REDIS_CONF=on

    [ok] Replace the maxclients=30 variable value

    [ok] Replace the maxmemory=1024M variable value

    [ok] Replace the requirepass=OTdmOWI4ZTM4NTY1M2M4OTZh variable value

    [ok] Replace the masterauth=OTdmOWI4ZTM4NTY1M2M4OTZh variable value

    [i] Start up /usr/local/bin/redis-server /etc/redis/redis.conf

    IV. runlike

    我仍然要提一下runlike,和rekcod有一样的作用

    本地安装使用

    yum install python-pip

    pip install runlike

    用法:

    runlike

    这打印出你需要运行什么来获得类似的容器。你可以$(runlike container-name)一步完成其输出。如下:

    [root@LinuxEA-172_25_50_250 ~]# runlike linuxea_redis

    docker run --name=linuxea_redis --hostname=LinuxEA-Node172_25_50_250.cluster.com --env=REDIS_CONF=on --env=REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh --env=MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh --env=MAXCLIENTS_NUM=30 --env=MAXMEMORY_SIZE=1024M --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=RS_VSON=5.0.0 --env=RS_USER=redis --env=RS_VSON_URL=http://download.redis.io/releases/redis-5.0.0.tar.gz --env=BATADIR=/usr/local/redis --env=DATADIR=/data/redis --env=DATALOG=/data/logs --env=DATACIG=/etc/redis --volume=linuxea_volume --network=host -p 6379:6379 --restart=no --detach=true -t marksugar/redis:5.0.0

    -p将命令行分解为漂亮漂亮的行。例如:

    [root@LinuxEA-172_25_50_250 ~]# runlike -p linuxea_redis

    docker run \

    --name=linuxea_redis \

    --hostname=LinuxEA-Node172_25_50_250.cluster.com \

    --env=REDIS_CONF=on \

    --env=REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh \

    --env=MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh \

    --env=MAXCLIENTS_NUM=30 \

    --env=MAXMEMORY_SIZE=1024M \

    --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \

    --env=RS_VSON=5.0.0 \

    --env=RS_USER=redis \

    --env=RS_VSON_URL=http://download.redis.io/releases/redis-5.0.0.tar.gz \

    --env=BATADIR=/usr/local/redis \

    --env=DATADIR=/data/redis \

    --env=DATALOG=/data/logs \

    --env=DATACIG=/etc/redis \

    --volume=linuxea_volume \

    --network=host \

    -p 6379:6379 \

    --restart=no \

    --detach=true \

    -t \

    marksugar/redis:5.0.0

    docker使用

    runlike被封装为一个名为assaflavie / runlike的Docker镜像。

    docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \

    assaflavie/runlike YOUR-CONTAINER

    或者您可以使用别名运行它,例如,将其保存在~/.profile或中~/.bashrc

    alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"

    然后您可以直接以本地命令运行

    runlike YOUR-CONTAINER

    V. docker-compose

    事实上这样的方式,我并不推荐,你大可不必这样 麻烦,直接使用docker-compose就可以完成简单的编排,如下:

    version: '2'

    services:

    redis:

    image: marksugar/redis:5.0.0

    container_name: redis

    restart: always

    network_mode: "host"

    privileged: true

    environment:

    - REDIS_CONF=on

    - REQUIRE_PASS=OTdmOWI4ZTM4NTY1M2M4OTZh

    - MASTER_AUTH=OTdmOWI4ZTM4NTY1M2M4OTZh

    - MAXCLIENTS_NUM=600

    - MAXMEMORY_SIZE=4096M

    volumes:

    - /etc/localtime:/etc/localtime:ro

    # - /etc/redis:/etc/redis

    - /data/redis-data:/data/redis:Z

    - /data/logs:/data/logs

    VI. 学习更多

    学习如何使用Docker CLI命令,Dockerfile命令,使用这些命令可以帮助你更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。

    除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

    本文作者:www.linuxea.com for Mark

    文章链接:http://www.linuxea.com/2270.html (转载请注明本文出处和本章链接)

    展开全文
  • 一:docker run参数覆盖Dockerfile中CMD命令情况 首先要明确docker run指令中的参数是什么? 答案:docker run 指令(-it/-p/-d等) 镜像名 参数(/bin/sh、bash等),即docker run命令中,镜像名后面的 都是给...

     

    一:docker run参数覆盖Dockerfile中CMD命令情况

    首先要明确docker run指令中的参数是什么?

    答案:docker run 指令(-it/-p/-d等) 镜像名 参数(/bin/sh、bash等),即docker run命令中,镜像名后面的 都是给容器执行的命令参数

    举例说明docker run参数覆盖Dockerfile中CMD命令的情况:

    首先基于镜像创建一个新的镜像,Dockerfile书写如下:

    按道理说:用docker run执行使用镜像创建容器时,屏幕上应该会输出:Hello World。

    接下来创建镜像:

    镜像创建,承建了一个名为test,版本号(tag)为1的镜像

     

    然后我们分别用docker run -it test:1 和 docker run -it test:1  bash  两个指令来使用镜像创建启动容器,注意观察他们的区别

    一:docker run -it test:1

    这里成功输出了Hello World

    二:docker run -it test:1  bash

    发现并没有输出Hello World, 而是执行了 bash指令给我们提供了交互界面,因此 是docker run -it test  bash中的bash命令参数覆盖了CMD。

    关于CMD和ENTRYPOINT还有一点需要特别注意的是:如果一个Dockerfile中有多个CMD或ENTRYPOINT,只有最后一个会生效,前面其他的都会被覆盖

    二:CMD与ENTRYPOINT区别

    区别一:ENTRYPOINT不会被docker run 中的参数命令覆盖

    区别二:如果在Dockerfile中CMD与ENTRYPOINT都存在,则CMD中的指令将会被作为ENTRYPOINT中的参数,即这时候CMD里的指令会失去它的作用,只是作为一个参数(可以理解为就是字符串)了,而且这个时候docker run后的参数指令依然会覆盖CMD,但是也会失去他本身的作用,仅仅是作为参数(字符串)提供给ENTRYPOINT中的命令

    例如:一个Dockerfile文件内容如下:

    FROM xxx(初始镜像名)

    ENTRYPOINT ["echo"]

    CMD ["Hello World"]

    使用该Dockerfile创建新镜像后,执行 docker run -it 镜像名,就应该会输出:Hello World(没有实际操作验证)

    接下来留一个小思考,如果使用该Dockerfile创建完成新镜像之后,执行docker run -it 镜像名 bash指令创建执行容器,CMD ["Hello World"] 这一条会不会被覆盖,会不会显示Hello World?

     

    依然会覆盖CMD,因此不会输出Hello World 而是会输出bash,而且 现在的bash已经不是给我们提供交互界面的指令了,而是ENTRYPOINT中 echo的一个参数了,因此也无法给我们提供交互界面

     

    从 docker ps -a就可以看出,使用镜像创建运行容器时执行的指令不是bash而是“echo bash“

     

    展开全文
  • 1、docker run -e参数: -e(向容器内传递环境变量,启动容器时用户可以动态传参) 1)--name 指定名称 2)-v 挂载文件,把该容器的数据保存到挂载的文件上 3)-p 端口映射( -p 8888:3306,8888宿主机的8888端口...

    1、docker run -e参数:

       -e(向容器内传递环境变量,启动容器时用户可以动态传参)

    1)--name  指定名称

    2)-v  挂载文件,把该容器的数据保存到挂载的文件上

    3)-p  端口映射( -p 8888:3306,8888宿主机的8888端口映射到容器的3306端口上)

    4) -d  后台运行

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

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

    命令:

    docker run --name some-mysql -v /home/navy/test/mysql:/var/lib/mysal -e MYSQL_ROOT_PASSWORD=1qaz9oI.  -p 8888:3306 -d mysql:5.7   (bridge模式,端口映射)

    2、docker run --network参数:

    docker的网络模式:bridge host ipvlan macvlan null overlay(ipvlan macvlan overlay这三个网络模式是集群用的很少用到)

    (1)null模式:无网络模式,自已手动设置网络模式

    (2)bridge模式:docker启动的默认模式,外界无法访问,有良好的网络隔离性,复杂性高,使用最多,是容器编排的基础;

    网络原理:

    1)linux名称空间的作用:虚拟化的强要求就是隔离,容器与容器、容器与宿主机之间要隔离这样是为了不互相干扰,但是目前内核没有隔离,除了内核外的网络、资源、文件系统、进程空间等都要隔离。

    2)网络名称空间:有网络名称空间这个东西让虚拟机与虚拟机、虚拟机与宿主机之间是完全隔离,不能通信;那么他们怎么通信呢?虚拟网卡可以解决这个问题:虚拟网卡成对出现,如果一对中的一个网卡发送信息(报文)会无条件地发送给这一对中的另一个虚拟网卡(如下图1);但是这会产生一个问题:如果要两两通信的很多那得放很多虚拟网卡

    3)为了解决2)中的问题引入了另一种技术:linux bridge(网桥):把成对网卡中的另一块放在网桥上,这样A要和C通信,A发出找Cip和端口的信息,B在网桥中的那一块网卡看到A的信息后发现不是自己就丢弃这个包,C在网桥中的那一块网卡看到A的信息发现就是自己的ip就会信息转发给C这个容器中的那块网卡里(如下图2)

    4)网桥再和宿主机连接,连接到eth0上,这样所有容器可以与宿主机通信:A要与外网一个IP和端口通信,(外网与子网掩码相与,发现不是内网Ip,就不在网桥内广播了)网桥会把A的信息发到宿主机的网卡上(如下图3),需求ipv4_fordward

     

     iptables:4表5链

    外网访问容器:目的地址:Hostip:port-->contianerip:port       源地址:本机Ip:port-->宿主机Ip:port

    (3)host模式:直接使用宿主机的网络,容易发生端口冲突(编译容器的时候用host模式/host模式可以当路由);如下图容器直接与宿主机通信

    eg:        docker run --name myjenkins -itd --network host -v /home/hogwarts/tech/tech/images/jenkins_data:/var/jenkins_home --env JAVA_OPTS="-xMX8192m" jenkins/jenkins   (host网络模式启动

    (4)container模式:内置网络模式,与以上几种物理层面的网络模式不同,同一个宿主机中不同容器互相通信

    eg: 1)前端:docker run --name =conan  -itd  -p 8999:4200 conan (bridge模式启动)           docker run --name=holmes -itd  --network=container:conan holmes( container模式启动,并且指向前端bridge模式启动的容器,这样两个容器就能互相通信)

           2)前端:docker run --name =conan  -itd  -p 8999:4200 conan (bridge模式启动)          docker run --name=holmes -itd --net=host holmes( host网络模式启动)

    注意:Linux命令中--代表全称,-代表简称,比如--name可以的简写-n

    3、另外一种两个容器间接连接的方式(官方开源容器喜欢这种方式来让两个容器通信):--link

    eg:搭建testlink:

    1)启动mariadb:(docker的镜像文件中有说明,启动teslink之前需要先启动mariadb,mariadb是mysql旗下另一款数据库产品,语法特性和mysql是一样的)

    docker run -d --name= mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER=bn_testlink -e MARIADB_DATABASE=bitnami_testlink -v /home/test/mysql:/var/lib/mysql -p 8088:3306 bitnami/mariadb:latest

    2)启动testlink:(testlink暴露出两个端口所以做了两次端口映射):用--link的方式把mariadb的环境变量的信息注入到testlink的容器中了

    docker run -d --name=testlink -p 8099:80 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link mariadb bitnami/testlink:latest

     

     

     

     

     

     

     

     

     

     

    展开全文
  • docker run参数详情 $ sudo docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…] Run a command in a new container 一、参数 -a, --attach=[] Attach to stdin, stdout or stderr. -c, --cpu-...
  • 安装pip 在安装过程中出现版本过低,就安装pip3 yum install -y python3-pip 安装runlike pip3 install runlike ...查看启动参数 ... docker run \ --name=nginx105 \ --hostname=74d35e8f150c \
  • 通过runlike去查看一个容器的docker run启动参数 pythone3安装 yum install -y python36 ln -s python3.6 python3 安装pip3 yum install -y python36-setuptools easy_install pip 安装之后,pip3位于/...
  • I am new to the docker world. I have to invoke a shell script that takes command line arguments through a docker container.Ex: My shell script looks like:#!bin/bashecho $1Dockerfile looks like this:FR...
  • 查看docker启动参数: yum install -y python-pip pip install runlike nginx为启动的容器名称,则: runlike -p nginx
  • docker run :创建一个新的容器并运行一个命令语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS说明:-a stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;-d:后台运行容器,并返回容器ID...
  • 查看Docker容器run时启动参数

    千次阅读 2021-01-04 14:55:14
    [root@localhost ~]# runlike -p jenkins //查看jenkins容器的run参数 docker run \ --name=jenkins \ --hostname=367402ec96bf \ --user=jenkins \ --mac-address=02:42:ac:11:00:03 \ --env=PATH=/usr/local/...
  • docker run -e传递环境变量问题记录

    千次阅读 2021-01-12 14:30:15
    解决思路很简单,就是通过 docker run 的时候将想要暴露的端口传递进容器,然后修改nginx默认监听端口。传递方式有一下两种。 方式一:通过 docker run -e 的方式指定环境变量,容器内部再去处理这个环境变量(推荐...
  • docker run 的 -i -t -d ...但是每次运行容器的时候都会遇到——“我是执行了docker run可是就是没有启动成功”,这是啥情况呢,一般都是(-i, -t, -d)这三个参数的使用问题,所以下面就详细介绍一下这-i
  • 安装runlike apt-get install python-pip sudo pip install runlike ...runlike -p Docker_container_name或者CONTAINNER_ID -p可以解析位单行展示 https://blog.51cto.com/u_9025736/2440391
  • docker run一般需要跟几个参数,如下所示: docker run -it --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest -i: 以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一...
  • Docker命令-docker run

    2020-12-23 00:16:03
    docker rundocker run 概述docker进程运行与独立的容器中,而容器是宿主机的一个进程。宿主机可以使本地的也可以是远程的。每当执行docker run之后,容器进程式独立运行的,他有自己的文件系统、网络以及与主机隔离...
  • docker run -v 详解

    千次阅读 2021-08-23 18:57:16
    下列复制自上面博文,只为自己日后查找方便: Docker容器启动的时候,如果要挂载宿主机的一个...# docker run -it -v /test:/soft centos /bin/bash 这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式
  • 三、docker rundocker-compose 的实例对比 前言 我们都知道 docker run 可以以容器的形式启动一个指定的服务,但是,当存在多个相互依赖的服务时,我们是不是也需要一个命令一个命令的去依次启动每个服务呢?...
  • 场景 CentOS7中使用Dockerfile部署后台jar包: ...动态参数,比如在运行时才指定项目的端口号,或者说在运行时再指定连接 mysql的地址。 注: 博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程
  • 根据镜像启动容器,执行命令如下:docker run --name mycentos -d centos,通过docker ps查看正在运行中容器,缺找不到mycentos容器。再次通过docker ps -a查看发现,mycentos容器已经处于停止状态了。 退出原因 ...
  • Docker 镜像只有运行起来,才会创建一个容器,才能提供对外服务这里我们先不解释什么是镜像,我们只解释它们之间的关系和类比我们先说镜像,镜像有点类似于已经打包好了,放在腾讯服务器上的,但还没有装在电脑上的 ...
  • docker run命令用于运行一个新容器,而启动一个容器需要非常多的信息,所以该命令的参数非常多,今天就详细分析下该命令支持的参数。 首先看一下该命令的格式: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…...
  • docker run命令详解

    2021-06-16 15:38:14
    简介: 创建容器常用选项说明 docker run [OPTIONS] 容器id/容器名称 /bin/bash #docker创建容器命令 OPTIONS 描述 -d, --detach=false 指定容器运行于前台还是后台 -i, --interactive=false 打开STDIN,. ...
  • 作为一般规则,环境变量向下传播,从不向父母传播.ENV将持续存在于构建环境中以及子映像和容器中.DockerfileFROM busyboxENV PLATFORM_HOME testRUN echo $PLATFORM_HOMEDockerfile.childFROM me/platformRUN echo $...
  • 因为我们要在docker中监控主机...[root@docker ~]# docker run -it centos Unable to find image ‘centos:latest’ locally Trying to pull repository docker.io/library/centos … latest: Pulling from docker.io/l
  • Dockerfile的后半部分(设置环境变量默认值,以及传到run.sh中) 一个坑:ENTRYPOINT 后面不能用[]的形式 否则无法读取环境变量值。 # 设置环境默认值 ENV task_id=123 ENV task_param=1 # entrypoint是容器入口 #...
  • docker run执行报错

    2021-04-15 10:57:03
    某些时候,执行docker run 时候因为命令无法正常执行容器会出错直接退出,此时可以查看退出的错误代码 默认情况下,常见错误代码包括: 125: Docker daemon 执行出错,例如指定了不支持的docker 命令参数 126: 所...
  • docker run neo4j

    2021-01-27 15:35:26
    启动neo4j 容器 参数说明可以参考:...docker run \ --name neo4j \ -p7474:7474 -p7687:7687 \ -d \ -v /etc/localtime:/etc/localtime \ -v /data/neo4j/data:/var/lib/neo4j/data \ -v
  • 前日同事直接使用docker run启动一个容器运行,没有使用docker-compose这样的编排工具,也没有保存docker run的命令,导致我们在迁移或者有修改的时候,有大概率会出现不一致的情况。 那么,能不能找回之前的run...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,294
精华内容 33,717
关键字:

dockerrun参数