麦克斯仇
Think different
159
文章
27970
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Docker命令5:docker run/create/update(运行/创建/修改容器)
创建日期:
2020/01/26
修改日期:
2023/10/31
Docker
> 未完善,继续整理中 > 这三个容器操作命令参数较多,且具有相同意义参数,所以单独列出并举例; `update`的参数是最少的,即容器创建好后可以修改的配置很少; `create`的参数和`run`的参数几乎相同,仅比`run`少三个参数,且`create`命令不常用,所以不做单独举例; # 命令格式 ``` # 运行一个新的容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker container run [OPTIONS] IMAGE [COMMAND] [ARG...] # 创建一个新的容器 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] docker container create [OPTIONS] IMAGE [COMMAND] [ARG...] # 更新一个或多个容器的配置 docker update [OPTIONS] CONTAINER [CONTAINER...] docker container update [OPTIONS] CONTAINER [CONTAINER...] ``` # docker run ## 已整理 ### 无参数 ```bash # 运行hello-world docker run hello-world ``` ### -i, --interactive 即使未连接STDIN也保持打开状态 ### -t, --tty 分配伪TTY(交互式的) ```bash # 交互式运行centos(基本上 -i -t 是在一起用,简写成 -it) docker run -it centos ``` ### -d, --detach 在后台运行容器并打印容器ID ```bash # 后台方式运行redis docker run -d redis ``` ### --name string 为容器分配一个名称 ```bash # 后台方式运行redis,容器名称为myredis docker run -d --name myreids redis ``` ### --network network 将容器连接到指定网络 ```bash # 运行容器并指定网络 docker network create -d bridge mybridge docker run -d --network mybridge busybox /bin/sh -c "while true; do sleep 3600; done" ``` ### -p, --publish list 将容器的端口发布到主机 ```bash # 后台运行Nginx并暴露80端口 docker run -d -p 80:80 nginx # 后台运行Nginx并暴露多个端口 docker run -d -p 80:80 -p 8080:8080 nginx # 后台运行Nginx并暴露多个连续端口 docker run -d -p 3000-3100:3000-3100 nginx ``` ### -e, --env list 设置环境变量 ```bash # 运行一个MySQL并指定默认密码和默认创建数据库 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mydb mysql ``` ### -v, --volume list 绑定装入一个卷 ```bash # 数据持久化:指定卷 # 运行一个MySQL并指定卷名称为mysql,创建好后执行 docker volume ls 即可看到刚刚创建的卷 # 在MySQL内创建一个数据库,然后删除容器并使用该卷重新创建一个MySQL,且创建时无需指定数据库默认密码(即使设置新密码也无需!) # 查看数据库,创建的数据库依旧存在 docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v mysql:/var/lib/mysql mysql docker rm -f mysql docker run -d --name mysql -p 3306:3306 -v mysql:/var/lib/mysql mysql # 数据持久化:指定本地目录 # 在物理机/root目录下创建一个test文件夹,并在文件夹内创建一个index.html文件,编辑此文件随便写点内容 # 运行一个MySQL并将本地/root/test/文件夹同步到/usr/share/nginx/html/文件夹内,打开浏览器即可看到刚刚编辑的文件内容 # 若此时在物理机内修改index.html文件,则浏览器可以刷新后看到修改,即本地文件和容器内文件同步 docker run -d --name nginx -p 80:80 -v /root/test/:/usr/share/nginx/html/ nginx ``` ### -m, --memory bytes 内存限制 ```bash # 运行一个stress,并限制内存大小 # 若物理机有swap分区,则swap内存等于-m设置的内存 # 如下命令内存限制100M,加上swap后总内存为200M,stress默认使用256M内存,容器无法运行 docker run -m 100M -it qzhing/ubuntu-stress-test --vm 1 --verbose # 如下命令内存限制200M,加上swap后总内存为400M,容器正常运行并打印日志 docker run -m 200M -it qzhing/ubuntu-stress-test --vm 1 --verbose ``` ### -c, --cpu-shares int CPU份额(相对权重) ```bash # 后台运行两个stress,并分别设置权重10和5 # 使用top命令查看CPU占用,一个占用66%,一个占用33% docker run -c 10 -d qzhing/ubuntu-stress-test --vm 1 docker run -c 5 -d qzhing/ubuntu-stress-test --vm 1 ``` ### --link list 添加链接到另一个容器(该方法不常用) ```bash # 创建两个busybox,并在创建第二个busybox的时候添加link指向test1 # 则在test2内可以成功ping test1 docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done" docker run -d --name test2 --link test1 busybox /bin/sh -c "while true; do sleep 3600; done" docker exec -it test2 /bin/bash ping test1 ``` ### --rm 在容器退出时自动删除它 ```bash # 运行 helloworld 并自动删除 docker run --rm hello-world ``` ### --restart string 在容器退出时应用重启策略(默认为 no ) ```bash # 运行 nginx 容器并设置自动重启,此时物理机重启时,容器会自动运行 # 但是当运行 docker stop 停止容器时,容器不会自动重启 docker run -d --restart always -p 80:80 nginx ``` ## 未整理 ```bash Options: --add-host list Add a custom host-to-IP mapping (host:ip) 添加自定义主机到ip的映射(主机:ip) -a, --attach list Attach to STDIN, STDOUT or STDERR 连接到标准输入、标准输出或标准输入 --blkio-weight uint16 Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0) 块IO(相对权重),在10和1000之间,或0禁用(默认0) --blkio-weight-device list Block IO weight (relative device weight) (default []) 块IO权值(相对设备权值)(默认[]) --cap-add list Add Linux capabilities 添加Linux功能 --cap-drop list Drop Linux capabilities 删除Linux功能 --cgroup-parent string Optional parent cgroup for the container 容器的可选父cgroup --cidfile string Write the container ID to the file 将容器ID写入文件 --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period 限制CPU CFS(完全公平调度程序)周期 --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota 限制CPU CFS(完全公平调度程序)配额 --cpu-rt-period int Limit CPU real-time period in microseconds 限制CPU实时周期(以微秒为单位) --cpu-rt-runtime int Limit CPU real-time runtime in microseconds 限制CPU实时运行时间(以微秒为单位) --cpus decimal Number of CPUs cpu的数量 --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) 允许执行的cpu (0-3,0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1) 允许执行的内存 (0-3,0,1) --detach-keys string Override the key sequence for detaching a container 覆盖用于分离容器的键序列 --device list Add a host device to the container 将主机设备添加到容器中 --device-cgroup-rule list Add a rule to the cgroup allowed devices list 在cgroup允许设备列表中添加一个规则 --device-read-bps list Limit read rate (bytes per second) from a device (default []) 限制设备的读取速率(每秒字节数)(默认[]) --device-read-iops list Limit read rate (IO per second) from a device (default []) 限制设备读取速率(每秒IO)(默认[]) --device-write-bps list Limit write rate (bytes per second) to a device (default []) 将写速率(每秒字节数)限制为一个设备(默认[]) --device-write-iops list Limit write rate (IO per second) to a device (default []) 将写速率(IO /秒)限制在一个设备上(默认[]) --disable-content-trust Skip image verification (default true) 跳过镜像验证(默认为true) --dns list Set custom DNS servers 设置自定义DNS服务器 --dns-option list Set DNS options 设置DNS选项 --dns-search list Set custom DNS search domains 设置自定义DNS搜索域 --domainname string Container NIS domain name 容器NIS域名 --entrypoint string Overwrite the default ENTRYPOINT of the image 覆盖镜像的默认入口点 --env-file list Read in a file of environment variables 读取环境变量文件 --expose list Expose a port or a range of ports 公开端口或端口范围 --gpus gpu-request GPU devices to add to the container ('all' to pass all GPUs) 将GPU设备添加到容器中('all'传递所有GPU) --group-add list Add additional groups to join 添加其他组以加入 --health-cmd string Command to run to check health 命令运行以检查健康状况 --health-interval duration Time between running the check (ms|s|m|h) (default 0s) 运行检查间隔时间(ms|s|m|h)(默认0s) --health-retries int Consecutive failures needed to report unhealthy 需要报告不健康的连续故障 --health-start-period duration Start period for the container to initialize before starting health-retries countdown (ms|s|m|h) (default 0s) 开始健康重试倒计时前容器初始化的起始时间(ms|s|m|h)(默认0s) --health-timeout duration Maximum time to allow one check to run (ms|s|m|h) (default 0s) 允许一次检查运行的最长时间(ms|s|m|h)(默认0s) -h, --hostname string Container host name 容器主机名 --init Run an init inside the container that forwards signals and reaps processes 在转发信号和获取进程的容器中运行init --ip string IPv4 address (e.g., 172.30.100.104) IPv4地址(如172.30.100.104) --ip6 string IPv6 address (e.g., 2001:db8::33) IPv6地址(例如,2001:db8::33) --ipc string IPC mode to use 使用IPC模式 --isolation string Container isolation technology 容器隔离技术 --kernel-memory bytes Kernel memory limit 内核内存限制 -l, --label list Set meta data on a container 在容器上设置元数据 --label-file list Read in a line delimited file of labels 读取以行分隔的标签文件 --link-local-ip list Container IPv4/IPv6 link-local addresses 容器IPv4/IPv6链路本地地址 --log-driver string Logging driver for the container 容器的日志驱动程序 --log-opt list Log driver options 日志驱动器选项 --mac-address string Container MAC address (e.g., 92:d0:c6:0a:29:33) 容器MAC地址(例如:92:d0:c6:0a:29:33) --memory-reservation bytes Memory soft limit 内存软限制 --memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap 交换限制等于内存加交换:'-1'以启用无限交换 --memory-swappiness int Tune container memory swappiness (0 to 100) (default -1) 调整容器内存swappiness(0到100)(默认-1) --mount mount Attach a filesystem mount to the container 将文件系统挂载附加到容器 --network-alias list Add network-scoped alias for the container 为容器添加网络范围的别名 --no-healthcheck Disable any container-specified HEALTHCHECK 禁用任何容器指定的健康检查 --oom-kill-disable Disable OOM Killer 禁用伯父杀手 --oom-score-adj int Tune host's OOM preferences (-1000 to 1000) 调整主机的OOM首选项(-1000到1000) --pid string PID namespace to use 要使用的PID名称空间 --pids-limit int Tune container pids limit (set -1 for unlimited) 调整容器pid限制(将-1设置为无限制) --privileged Give extended privileges to this container 将扩展权限授予此容器 -P, --publish-all Publish all exposed ports to random ports 将所有公开的端口发布到随机端口 --read-only Mount the container's root filesystem as read only 将容器的根文件系统挂载为只读 --runtime string Runtime to use for this container 用于此容器的运行时 --security-opt list Security Options 安全选项 --shm-size bytes Size of /dev/shm /dev/shm大小 --sig-proxy Proxy received signals to the process (default true) 代理接收到进程的信号(默认为true) --stop-signal string Signal to stop a container (default "SIGTERM") 停止容器的信号(默认为“SIGTERM”) --stop-timeout int Timeout (in seconds) to stop a container 超时(秒)以停止容器 --storage-opt list Storage driver options for the container 容器的存储驱动程序选项 --sysctl map Sysctl options (default map[]) Sysctl选项(默认映射[]) --tmpfs list Mount a tmpfs directory 挂载tmpfs目录 --ulimit ulimit Ulimit options (default []) Ulimit选项(默认[]) -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) 用户名或UID(格式:< name| UID >[:<group|gid>]) --userns string User namespace to use 要使用的用户名称空间 --uts string UTS namespace to use 要使用的UTS名称空间 --volume-driver string Optional volume driver for the container 容器的可选卷驱动程序 --volumes-from list Mount volumes from the specified container(s) 从指定容器装入卷 -w, --workdir string Working directory inside the container 容器内的工作目录 ```
44
全部评论