Docker run 参考指南

Docker run参考指南

docker运行在一个独立的隔离的进程中。

当用户执行dockerrun,它将启动一个有着独立的文件系统,独立的网络和独立的进程树的进程。

基本的docker run命令的格式:

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

[OPTIONS]分为两种:

1.对于用户独占性的设置:

前台、后台运行

容器定义

网络设定

容器在CPU和内存中的运行时间

运行权限和LXC配置

2.在操作者和开发者之间的共享设定,操作者可以覆盖掉开发者在build镜像的时候的默认设置。

前台和后台

后台(-d)

在后台模式(-d=true或者直接使用-d)

所有的IO操作都必须通过网络连接或者共享卷来进行,因为容器在后台运行的时候就不能收到命令行。

当然也可以通过执行dockerattach重新连上在后台执行的容器。

如果你选择运行一个容器在后台模式,那你就不能使用-rm选项了。

前台

在前台模式(默认的)

docker run可以在容器里开启一个进程的同时

你可以通过控制台来获得进程的STDIN、STDOUT、STDERR。

也可以作为终端和传递信号。所有这些的配置方法如下:

-a, --attach=[]           连接容器的stdin、stdout、stderr
(默认连接这三个流)

-t, --tty=false           使用终端。经常和
-i
一起使用。

--sig-proxy=true          代理所有收到的系统信息(我测试了一下好像没有作用)

-i, --interactive=false   打开STDIN和容器交互。经常和
-t
一起使用。

docker run -a stdin -a stdout -i-t ubuntu /bin/bash

容器的标识

我们可以通过三种方式来定义一个容器

UUID长定义("f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778")

UUID短定义("f78375b1c487")

名字     ("evil_ptolemy")

UUID标识是来自于Docker的后台进程

如果你不通过-name来分配一个名字给容器,那么后台进程就会产生一个随机的字段名。

PID等价为了更自动化,你可以在容器启动的时候将容器的进程ID写入到一个指定的文件中

--cidfile=""                   写入容器的进程ID到指定文件

网络设定

--dns=[]              设置容器的DNS服务器

--net="bridge"        设置容器的网络连接方式

‘bridge‘:             桥接

‘none‘:               不提供网络连接

‘container:<name|id>‘:复用另一个容器的网络连接,(共享一个网络堆栈)

‘host‘:               使用宿主机的网络环境

$ docker run -d --name redisexample/redis --bind 127.0.0.1

$ # use the redis container‘s network stack to access localhost

$ docker run --rm -ti --netcontainer:redis example/redis-cli -h 127.0.0.1

清理(-rm)

Docker容器会在运行结束之后继续保留容器的文件系统。

如果你希望在退出的时候自动清理这些文件,可以加上--rm参数。(特别适合初学者随便建容器)

容器的CPU和内存占用

用户可以调整容器的性能参数:

-m, --memory=""       内存限制(单位:b,
k, m or g)

-c=0                  CPU优先级
(相对权重)

用户可以通过docker run -m来方便的限定容器的内存使用。

默认所有容器都运行在相同优先级上,得到相同的比例的CPU周期。

但是你可以在docker启动这些容器的时候告诉内核给予更多的cpu分配。

挂载目录(直接给例子吧)

-v=[]:绑定挂载目录

宿主机绑定: -v<host>:<container>:[rw|ro]

在Docker中新建一个共享的卷:
-v /<container>

sudo docker run --rm-i -t -v /home/hyzhou/docker:/data:rw ubuntu:14.04 /bin/bash

将本机的/home/hyzhou/docker,挂载到镜像中的/data目录

--volumes-from=""         从容器挂载共享目录

sudo docker run --rm -i -t -v/valume --name test ubuntu:14.04 /bin/bash

sudo docker run --rm-i -t --volumes-fromtest buntu:14.04 /bin/bash

挂载test镜像的/valume目录

用户

容器默认的用户是root(id=0),但是如果开发者创建了其他的用户,那些用户也可以访问。

开发者可以设置一个默认用户来运行第一个进程通过Dockerfile USER命令,但是操作者可以覆盖它:

-u=""                设置默认的用户名或UID

工作目录

一个容器内的默认工作目录是根目录(/)

-w=""                设置默认的工作目录

时间: 2024-12-20 07:30:48

Docker run 参考指南的相关文章

Docker入坑指南之RUN

总有一些场景,我们需要自己制作一个镜像,可以快速还原环境,又不想被其他因素干扰镜像的纯净,这个时候,就可以选择Docker了,启动便捷,镜像还原很快捷,除了上手不容易. 最近入坑研究了一番,小有心得,故写一篇杂文,记录自己的踩坑经历. 安装Docker的过程可以参考其他前辈的文章,不再赘述,从实战角度说,如何构建一个自用的Docker镜像. 首选说一下Docker的几个名词,仓库是管理镜像的,容器是镜像启动后的,镜像就是最干净的环境,镜像启动之后变成容器. docker的run是启动镜像的介质,

docker run Influxdb

本文假设读者已经安装并配置好了Docker的运行环境,Docker daemon已经运行.如果要在Suse上安装Docker,请参考文章Docker学习系列1-Suse安装Docker来设置Docker运行环境.如果是其他Linux系统,请参考Docker官方文档进行安装配置. # docker pull tutum/influxdb 该命令执行成功后,使用docker images命令可以查看下载的镜像 #docker images REPOSITORY            TAG     

使用docker-compose简化docker run 运行参数

目录 1docker-compose安装 2官网docker运行参数简化 3docker-compose.yml语法说明 4参考链接 docker-compose安装 docker-compose安装非常简单,使用pip install docker-compose 即可,若提示找不到pip错误请安装pip : ubuntu : apt-get install -y python-dev python-pip centos: yum install -y python-devel phthon-

docker run命令详解及示例(二)

docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container 上接博文:docker run命令详解及示例(一) --link --link=[]        Add link to another container 用于连接两个容器. 启动容器1:web docker run --name web -d -p 22 -p 80 -itwebserver:v1

POCO库中文编程参考指南(11)如何使用Reactor框架?

1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调. 2 光说不练假把式 PoechantReactorServer 类,基本与 PoechantTCPServer: class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} //: _he

4、永远的HelloWorld(docker run)

之前已经说过在centos 6.5 以及 centos 7上如何安装docker,接下来我们可以尝试运行一个容器.在进行之前我们要明白这里所说的HelloWorld是什么,HelloWorld是docker在docker-hub上专门为docker测试提供的一个镜像,在我装完docker以后,我的docker主机就是我的centos 6.8,我需要从docker-hub上抓下来一个HelloWorld镜像,然后以这个镜像为模板,运行一个HelloWorld的容器实例,进行验证 阿里云镜像加速为什

Docker run 命令的使用方法

[编者的话]在Docker中,run应该是用户使用最多的命令了,很多读者反馈不是很明白run命令的用法,而且相关的书籍.中文资料中对run命令的描述也不是非常完整,所以DockerOne组织翻译了Docker官方的文档,以飨读者.注意,本文基于最新的Docker 1.4文档翻译. Docker会在隔离的容器中运行进程.当运行 docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统.网络资源和以此进程为根进程的进程组.在容器启动时,镜像可能已经定义了要运行的二进制

mysql的docker版本,如何通过docker run定制服务器选项

一般用的是My.cnf文件. 如果要图省事呢? 以下的命令可供参考. 特别是--character-set-server=utf8 --collation-server=utf8_general_ci --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" docker run --name mysql-server -t > -e MYSQL_DATABASE="zabbix" > -e MYSQ

docker run常用命令及 解决 ubuntu镜像无法识别 ifconfig ping 命令

docker run -it     docker 前端启动 container容器           -d             后端启动 container容器           -p             固定端口映射            -P             不固定端口映射           --name         给生成的容器起名字docker ps:默认显示正在运行的container       ps -a 显示所有的container容器docker r