百度
360搜索
搜狗搜索

docker run,Docker常用命令大全详细介绍

本文目录一览: Docker命令-docker run

原文

docker进程运行与独立的容器中,而容器是宿主机的一个进程。宿主机可以使本地的也可以是远程的。每当执行 docker run 之后,容器进程式独立运行的,他有自己的文件系统、网络以及与主机隔离的进程??。

这里将介绍如何使用 docker run 运行容器以及容器资源。

一个 docker run 命令使用如下:

docker run 命令必须指定一个容器镜像,镜像开发者可以定义镜像的一些默认值:

开发者可以通过 docker run [options] 添加或者修改镜像的默认设置。此外,开发者几乎可以完全覆盖掉容器运行时的默认设置。正因为 docker run 能修改镜像和容器的默认设置,所以他的 [options] 可选项要比其他任何docker命令都要多。

要知道更多的 [options] ,移步: options type

最好只是懂得 docker run 命令的人去使用这些选项!

当你运行Docker容器的时候你需要决定是要在后台运行还是默认前台运行,当你选择后台运行时会在命令执行后打印出最新运行的容器ID。

想要让你的容器以后台方式运行只需要在使用参数 -d=true 或者 -d 即可。docker设计的默认情况下,如果你的容器以后台方式运行,只有在父进程即docker进程退出的时候才会去把容器退出,除非你使用了 --rm 选项。如果你在运行容器时将 -d 和 --rm 两个选项一起使用,那么容器会在退出或者后台进程停止的的时候自动移除掉(只要一个情况便会自动移除镜像)。

dokcer容器后台运行是不能通过 service x start 来启动的,比如想启动一个后台运行的 nginx 服务:

这样虽然启动了容器内的 nginx 服务,但是是不可用的,因为这种方式违背了后台运行容器的使用规范。nginx服务虽然启动了,但是他的所属容器服务已经停了,导致nginx服务是不可用的。如果想启动一个nginx服务请使用如下命令:

当容器后台运行之后便不回响应命令行的的相关操作,可以通过网络连接或者文件挂载方式查看容器运行的输入输出日志。可以通过 docker attach 来操作。

在不指定 -d 的情况下,容器默认是前台运行的,可以看到容器运行时候的输入输出以及错误信息日志。容器甚至还可以模拟终端输入输出(TTY),配置项如下:

如果你没有指定 -a 参数,docker默认会指定 stdout 和 stderr ,你也可以任意指定你想要的终端显示信息,例如:

为了开启容器终端,你必须指定参数 -i -t 。通常情况下 -i -t 会一起使用 -it ,注意如果容器需要从一个pipe接收输入参数时是不能使用 -t 的,例如:

定义一个容器ID有三种方式:

UUID是由docker的后台进程创建的。如果你没有指定容器名称,那么docker会默认生成一个随机字符串名字。如果你指定了容器的名字,不管是选择前台运行还是后台运行甚至docker网络配置的时候,你都可以在通过名字 name 来引用该容器。

为了方便管理,你可以选择让docker将容器ID写入到一个文件中。这个功能类似于一些程序会将进程PID写入到文件中,例如:

虽然给一个容器指定ID不是严格的要求规范,但是你可以在启动容器的时候指定容器的标签 iamge:tag ,例如:

使用V2或之后的镜像格式制作的镜像文件具有摘要内存寻址功能。只要生成镜像的参数和方式没有改变,那么这个镜像的摘要是可预测和可引用的。

例如下面这个运行一个从 alpine 拉取的镜像:

镜像摘要: sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0

...

果然 docker run 是参数最多的命令,篇幅太多了,先翻译到这里,大致使用已经涵盖了,先去翻译接下来的命令了。

更多信息请参考 原文

更多参数说明:

docker容器启动命令是什么

Docker容器大家可能听说过,这是一个开源的应用容器引擎。使用起来非常的方便。那么docker容器启动命令是什么呢?其实是“dockerrun选项镜像名”。docker容器启动命令答:dockerrun选项镜像名。run命令的作用是新建并且运行容器。docker容器的优势1、开发者着可以将应用统一打包到可移植的容器中,非常的方便。2、可以很轻松的在机器和数据中西能运行,几乎是没有性能开销的。3、安全很有保障,会进行定期的渗透测试。4、还会对服务器进行及时的升级,让用户更加的省心。

docker 容器自动启动run

部署项目服务器时,为了应对停电等情况影响正常web项目的访问,会把Docker容器设置为开机自动启动。

如果创建时未指定 --restart=always ,可通过update 命令设置

Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。

Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。

Docker容器的重启策略如下:

no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

docker run的退出状态码如下:

0,表示正常退出
非0,表示异常退出(退出状态码采用chroot标准)
125,Docker守护进程本身的错误
126,容器启动后,要执行的默认命令无法调用
127,容器启动后,要执行的默认命令不存在
其他命令状态码,容器启动后正常执行命令,退出命令时该命令的返回状态码作为容器的退出状态码

通过--restart选项,可以设置容器的重启策略,以决定在容器退出时Docker守护进程是否重启刚刚退出的容器。

--restart选项通常只用于detached模式的容器。

--restart选项不能与--rm选项同时使用。显然,--restart选项适用于detached模式的容器,而--rm选项适用于foreground模式的容器。

在docker ps查看容器时,对于使用了--restart选项的容器,其可能的状态只有Up或Restarting两种状态。

示例:

补充:

查看容器重启次数

查看容器最后一次的启动时间

docker常用命令

1、 service docker start // 启动docker
2、 docker images // 查看docker所安装的镜像
3、 docker search [name] 查询某个镜像 例如查询mysql docker search mysql
4、 docker pull [name] 拉取某个镜像 例如mysql docker pull mysql
5、 docker pull [name] [:tag] tag版本号 如果不写默认拉取最新的版本
例如: docker pull mysql:5.7
6、 docker rmi [imgaeId] 删除命令,imageId是镜像id

2.1 新建一个新的容器 docker pull centos
2.2 docker run [可选参数] image名字
参数说明
--name="Name" 给容器命名
-d 后台方式运行
-p [主机端口]:[容器端口] 指定容器的端口 例如启动tomcat 命令: docker run -p 8081:8080 tomcat 解释:8081是对外访问(服务器)的端口。8080是docker里面的tomcat端口. tomcat是镜像拉取下来后的名字. 例:若别人访问。IP+8081端口才能访问到tomcat启动的项目
-P 大写P是随机指定端口
-it 与容器交互,就是进入到容器里面

命令: docker run -it [镜像名称] /bin/bash 例子: docker run -it centos /bin/bash

docker ps 查看运行中的容器
docker ps -q 只查询运行容器的编号,一般与下面-a合并使用, docker ps -aq
docker ps -a 查看曾经运行过的容器
docker ps -a -n=1 加上-n可以指定查询最近几个运行的容器、

Ctrl+p+q 这样退出就不会停止容器

docker rm -f [容器id] 指定删除某个运行的容器
docker rm -f $(docker ps -aq) 删除全部运行的容器

docker start [容器id] 启动容器
docker restart [容器id] 重启容器
docker stop [容器id] 停止容器
docker kill [容器id] 强制停止容器

docker run -d [镜像名] 例如: docker run -d centos
但是有问题, docker ps 查询不到运行的容器
原因:docker容器用后台运行,就必须要有一个前台进程,docker发现没有应用,所以就自动停止

docker logs -tf --tail 10 [容器id]
t的意思是时间戳,f保留日志打印窗口,tail持续打印,10打印最后10条

docker top [容器id]

docker inspect [容器id]

方式一: docker exec -it [containt_id] /bin/bash // 进入该镜像内部

docker cp [容器id]:[容器路径] [主机路径]

docker run 和网络有关吗

在Docker中,run应该是用户使用最多的命令了,很多读者反馈不是很明白run命令的用法,而且相关的书籍、中文资料中对run命令的描述也不是非常完整,所以DockerOne组织翻译了Docker官方的文档,以飨读者。注意,本文基于最新的Docker 1.4文档翻译。
Docker会在隔离的容器中运行进程。当运行 docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义(译者注:docker run可以控制一个容器运行时的行为,它可以覆盖docker build在构建镜像时的一些默认配置),这也是为什么run命令相比于其它命令有如此多的参数的原因。
命令格式
最基本的docker run命令的格式如下:
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
如果需要查看[OPTIONS]的详细使用说明,请参考Docker关于OPTIONS的章节。这里仅简要介绍Run所使用到的参数。OPTIONS总起来说可以分为两类:
设置运行方式:
决定容器的运行方式,前台执行还是后台执行;
设置containerID;
设置网络参数;
设置容器的CPU和内存参数;
- 设置权限和LXC参数;
设置镜像的默认资源,也就是说用户可以使用该命令来覆盖在镜像构建时的一些默认配置。
docker run [OPTIONS]可以让用户完全控制容器的生命周期,并允许用户覆盖执行docker build时所设定的参数,甚至也可以修改本身由Docker所控制的内核级参数。
Operator exclusive options
当执行docker run时可以设置以下参数:
Detached vs Foreground
Detached (-d)
- Foreground
Container Identification
Name (--name)
- PID Equivalent
IPC Setting
Network Settings
Clean Up (--rm)
Runtime Constraints on CPU and Memory
Runtime Privilege, Linux Capabilities, and LXC Configuration
接下来我们依次进行介绍。
Detached vs foreground
当我们启动一个容器时,首先需要确定这个容器是运行在前台还是运行在后台。
-d=false: Detached mode: Run container in the background, print new container id
Detached (-d)
如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口。但你可以通过执行docker attach来重新附着到该容器的回话中。需要注意的是,容器运行在后台模式下,是不能使用--rm选项的。
Foregroud
在前台模式下(不指定-d参数即可),Docker会在容器中启动进程,同时将当前的命令行窗口附着到容器的标准输入、标准输出和标准错误中。也就是说容器中所有的输出都可以在当前窗口中看到。甚至它都可以虚拟出一个TTY窗口,来执行信号中断。这一切都是可以配置的:
-a=[]      : Attach to `STDIN`, `STDOUT` and/or `STDERR`
-t=false    : Allocate a pseudo-tty
--sig-proxy=true : Proxify all received signal to the process (non-TTY mode only)
-i=false    : Keep STDIN open even if not attached
如果在执行run命令时没有指定-a参数,那么Docker默认会挂载所有标准数据流,包括输入输出和错误,你可以单独指定挂载哪个标准流。
$ sudo docker run -a stdin -a stdout -i -t ubuntu /bin/bash
如果要进行交互式操作(例如Shell脚本),那我们必须使用-i -t参数同容器进行数据交互。但是当通过管道同容器进行交互时,就不需要使用-t参数,例如下面的命令:
echo test | docker run -i busybox cat
容器识别
Name(--name)
可以通过三种方式为容器命名:
1. 使用UUID长命名("f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778")
2. 使用UUID短命令("f78375b1c487")
3. 使用Name("evil_ptolemy")
这个UUID标示是由Docker deamon生成的。如果你在执行docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID。但是对于一个容器来说有个name会非常方便,当你需要连接其它容器时或者类似需要区分其它容器时,使用容器名称可以简化操作。无论容器运行在前台或者后台,这个名字都是有效的。
PID equivalent
如果在使用Docker时有自动化的需求,你可以将containerID输出到指定的文件中(PIDfile),类似于某些应用程序将自身ID输出到文件中,方便后续脚本操作。
--cidfile="": Write the container ID to the file
Image[:tag]
当一个镜像的名称不足以分辨这个镜像所代表的含义时,你可以通过tag将版本信息添加到run命令中,以执行特定版本的镜像。例如: docker run ubuntu:14.04
IPC Settings
默认情况下,所有容器都开启了IPC命名空间。
--ipc="" : Set the IPC mode for the container,
'container:

阅读更多 >>>  口红能带上飞机吗

': reuses another container's IPC namespace

'host': use the host's IPC namespace inside the container

IPC(POSIX/SysV IPC)命名空间提供了相互隔离的命名共享内存、信号灯变量和消息队列。

共享内存可以提高进程数据的交互速度。共享内存一般用在数据库和高性能应用(C/OpenMPI、C++/using boost libraries)上或者金融服务上。如果需要容器中部署上述类型的应用,那么就应该在多个容器直接使用共享内存了。

Network settings

默认情况下,所有的容器都开启了网络接口,同时可以接受任何外部的数据请求。

--dns=[] : Set custom dns servers for the container

--net="bridge" : Set the Network mode for the container

'bridge': creates a new network stack for the container on the docker bridge

'none': no networking for this container

'container:

': reuses another container network stack

'host': use the host network stack inside the container

--add-host="" : Add a line to /etc/hosts (host:IP)

--mac-address="" : Sets the container's Ethernet device's MAC address

你可以通过docker run --net none来关闭网络接口,此时将关闭所有网络数据的输入输出,你只能通过STDIN、STDOUT或者files来完成I/O操作。默认情况下,容器使用主机的DNS设置,你也可以通过--dns来覆盖容器内的DNS设置。同时Docker为容器默认生成一个MAC地址,你可以通过--mac-address 12:34:56:78:9a:bc来设置你自己的MAC地址。

Docker支持的网络模式有:

none。关闭容器内的网络连接

bridge。通过veth接口来连接容器,默认配置。

host。允许容器使用host的网络堆栈信息。 注意:这种方式将允许容器访问host中类似D-BUS之类的系统服务,所以认为是不安全的。

container。使用另外一个容器的网络堆栈信息。   

None模式

将网络模式设置为none时,这个容器将不允许访问任何外部router。这个容器内部只会有一个loopback接口,而且不存在任何可以访问外部网络的router。

Bridge模式

Docker默认会将容器设置为bridge模式。此时在主机上面将会存在一个docker0的网络接口,同时会针对容器创建一对veth接口。其中一个veth接口是在主机充当网卡桥接作用,另外一个veth接口存在于容器的命名空间中,并且指向容器的loopback。Docker会自动给这个容器分配一个IP,并且将容器内的数据通过桥接转发到外部。

Host模式

当网络模式设置为host时,这个容器将完全共享host的网络堆栈。host所有的网络接口将完全对容器开放。容器的主机名也会存在于主机的hostname中。这时,容器所有对外暴露的端口和对其它容器的连接,将完全失效。

Container模式

当网络模式设置为Container时,这个容器将完全复用另外一个容器的网络堆栈。同时使用时这个容器的名称必须要符合下面的格式:--net container:

.

比如当前有一个绑定了本地地址localhost的Redis容器。如果另外一个容器需要复用这个网络堆栈,则需要如下操作:

$ sudo docker run -d --name redis example/redis --bind 127.0.0.1

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

$ sudo docker run --rm -ti --net container:redis example/redis-cli -h 127.0.0.1

管理/etc/hosts

/etc/hosts文件中会包含容器的hostname信息,我们也可以使用--add-host这个参数来动态添加/etc/hosts中的数据。

$ /docker run -ti --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts

172.17.0.22 09d03f76bf2c

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

127.0.0.1 localhost

::1 localhost ip6-localhost ip6-loopback

86.75.30.9 db-static

Clean up (--rm)

默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另外一方面,你也可以保存容器所产生的数据。但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。

这个时候你就需要--rm这个参数了。 注意:--rm 和 -d不能共用!

--rm=false: Automatically remove the container when it exits (incompatible with -d)

Security configuration

--security-opt="label:user:USER" : Set the label user for the container

--security-opt="label:role:ROLE" : Set the label role for the container

--security-opt="label:type:TYPE" : Set the label type for the container

--security-opt="label:level:LEVEL" : Set the label level for the container

--security-opt="label:disable" : Turn off label confinement for the container

--secutity-opt="apparmor:PROFILE" : Set the apparmor profile to be applied to the container

你可以通过--security-opt修改容器默认的schema标签。比如说,对于一个MLS系统来说(译者注:MLS应该是指Multiple Listing System),你可以指定MCS/MLS级别。使用下面的命令可以在不同的容器间分享内容:

#docker run --security-opt label:level:s0:c100,c200 -i -t fedora bash

如果是MLS系统,则使用下面的命令:

# docker run --security-opt label:level:TopSecret -i -t rhel7 bash

使用下面的命令可以在容器内禁用安全策略:

# docker run --security-opt label:disable -i -t fedora bash

如果你需要在容器内执行更为严格的安全策略,那么你可以为这个容器指定一个策略替代,比如你可以使用下面的命令来指定容器只监听Apache端口:

# docker run --security-opt label:type:svirt_apache_t -i -t centos bash

注意:此时,你的主机环境中必须存在一个名为svirt_apache_t的安全策略。

Runtime constraints on CPU and memory

下面的参数可以用来调整容器内的性能。

-m="": Memory limit (format:

阅读更多 >>>  菠萝叶怎么种

, where unit = b, k, m or g)

-c=0 : CPU shares (relative weight)

通过docker run -m可以调整容器所使用的内存资源。如果主机支持swap内存,那么可以使用-m可以设定比主机物理内存还大的值。

同样,通过-c可以调整容器的CPU优先级。默认情况下,所有的容器拥有相同的CPU优先级和CPU调度周期,但你可以通过Docker来通知内核给予某个或某几个容器更多的CPU计算周期。

比如,我们使用-c或者--cpu-shares =0启动了C0、C1、C2三个容器,使用-c/--cpu-shares=512启动了C3容器。这时,C0、C1、C2可以100%的使用CPU资源(1024),但C3只能使用50%的CPU资源(512)。如果这个主机的操作系统是时序调度类型的,每个CPU时间片是100微秒,那么C0、C1、C2将完全使用掉这100微秒,而C3只能使用50微秒。

Runtime privilege, Linux capabilities, and LXC configuration

--cap-add: Add Linux capabilities

--cap-drop: Drop Linux capabilities

--privileged=false: Give extended privileges to this container

--device=[]: Allows you to run devices inside the container without the --privileged flag.

--lxc-conf=[]: (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"

默认情况下,Docker的容器是没有特权的,例如不能在容器中再启动一个容器。这是因为默认情况下容器是不能访问任何其它设备的。但是通过"privileged",容器就拥有了访问任何其它设备的权限。

当操作者执行docker run --privileged时,Docker将拥有访问主机所有设备的权限,同时Docker也会在apparmor或者selinux做一些设置,使容器可以容易的访问那些运行在容器外部的设备。你可以访问Docker博客来获取更多关于--privileged的用法。

同时,你也可以限制容器只能访问一些指定的设备。下面的命令将允许容器只访问一些特定设备:

$ sudo docker run --device=/dev/snd:/dev/snd ...

默认情况下,容器拥有对设备的读、写、创建设备文件的权限。使用:rwm来配合--device,你可以控制这些权限。

$ sudo docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk /dev/xvdc

Command (m for help): q

$ sudo docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk /dev/xvdc

You will not be able to write the partition table.

Command (m for help): q

$ sudo docker run --device=/dev/sda:/dev/xvdc:w --rm -it ubuntu fdisk /dev/xvdc

crash....

$ sudo docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk /dev/xvdc

fdisk: unable to open /dev/xvdc: Operation not permitted

使用--cap-add和--cap-drop,配合--privileged,你可以更细致的控制人哦怒气。默认使用这两个参数的情况下,容器拥有一系列的内核修改权限,这两个参数都支持all值,如果你想让某个容器拥有除了MKNOD之外的所有内核权限,那么可以执行下面的命令:

$ sudo docker run --cap-add=ALL --cap-drop=MKNOD ...

如果需要修改网络接口数据,那么就建议使用--cap-add=NET_ADMIN,而不是使用--privileged。

$ docker run -t -i --rm ubuntu:14.04 ip link add dummy0 type dummy

RTNETLINK answers: Operation not permitted

$ docker run -t -i --rm --cap-add=NET_ADMIN ubuntu:14.04 ip link add dummy0 type dummy

如果要挂载一个FUSE文件系统,那么就需要--cap-add和--device了。

$ docker run --rm -it --cap-add SYS_ADMIN sshfs sshfs sven@10.10.10.20:/home/sven /mnt

fuse: failed to open /dev/fuse: Operation not permitted

$ docker run --rm -it --device /dev/fuse sshfs sshfs sven@10.10.10.20:/home/sven /mnt

fusermount: mount failed: Operation not permitted

$ docker run --rm -it --cap-add SYS_ADMIN --device /dev/fuse sshfs

# sshfs sven@10.10.10.20:/home/sven /mnt

The authenticity of host '10.10.10.20 (10.10.10.20)' can't be established.

ECDSA key fingerprint is 25:34:85:75:25:b0:17:46:05:19:04:93:b5:dd:5f:c6.

Are you sure you want to continue connecting (yes/no)? yes

sven@10.10.10.20's password:

root@30aa0cfaf1b5:/# ls -la /mnt/src/docker

total 1516

drwxrwxr-x 1 1000 1000 4096 Dec 4 06:08 .

drwxrwxr-x 1 1000 1000 4096 Dec 4 11:46 ..

-rw-rw-r-- 1 1000 1000 16 Oct 8 00:09 .dockerignore

-rwxrwxr-x 1 1000 1000 464 Oct 8 00:09 .drone.yml

drwxrwxr-x 1 1000 1000 4096 Dec 4 06:11 .git

-rw-rw-r-- 1 1000 1000 461 Dec 4 06:08 .gitignore

如果Docker守护进程在启动时选择了lxc lxc-driver(docker -d --exec-driver=lxc),那么就可以使用--lxc-conf来设定LXC参数。但需要注意的是,未来主机上的Docker deamon有可能不会使用LXC,所以这些参数有可能会包含一些没有实现的配置功能。这意味着,用户在操作这些参数时必须要十分熟悉LXC。

特别注意:当你使用--lxc-conf修改容器参数后,Docker deamon将不再管理这些参数,那么用户必须自行进行管理。比如说,你使用--lxc-conf修改了容器的IP地址,那么在/etc/hosts里面是不会自动体现的,需要你自行维护。

Overriding Dockerfile image defaults

当开发者使用Dockerfile进行build或者使用commit提交容器时,开发人员可以设定一些镜像默认参数。

在windows下创建docker run时应注意事项

docker run -itd -p 8080:80 -v E/phpstudy_pro/WWW:/usr/local/nginx/html --name centos-php73-1224 xingfupeng/php:7.3-fpm-centos7 /bin/bash

--name: 指定容器名称

-p:指定容器端口号

-d:指定容器后台运行

--volume , -v: 绑定一个卷? 如: -v /data:/data 以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

还有特别注意的点是:要先安装docker desktop软件,然后在设置里Settings-Resources-FILE SHARING 里面要把上面的win目录对应创建上,才能好使,要不然会出现docker: Error response from daemon: invalid mode此类的问题

要挂载目录,不要挂载文件。

文件有缓存这个事情,我自己遇到了,因为是用git的,所以我先删除文件,再git revert回来,就没问题了

上面的应该是挺全的run了。

最新实践:拉取东西要在docker里进行,git pull、git checkout 分支一类的,不要在IDE编辑器里进行,要不然不更新文件

Docker常用命令大全

1、启动停止的容器(还是运行之前给定的命令)。删除指定的容器。--force选项可以强制性删除运行的容器。在容器和主机之间拷贝文件、目录。
2、sudodockerexec-it[containerID]/bin/bash交互模式中,使用ctrl+p+q退出交互保持运行,使用exit命令退出并停止容器。
3、具体操作如下:dockerattach[options]容器会连接到正在运行的容器,然后将容器的标准输入、输出和错误流信息附在本地打印出来。命令中options的取值有三种:--detach-keys,--no-stdin,--sig-proxy。
4、docker删除镜像的命令是dockerrmi。如果要删除本地的镜像,可以使用dockerrmi(注意rm为删除容器,而rmi为删除镜像,其中i代表image)命令,它的具体语法如下:dockerrmi[OPTIONS]IMAGE[IMAGE]。
5、RUN指令用于执行命令,该指令有两种形式:例如我们执行更新命令:CMD的使用方式跟RUN类似,不过在一个Dockerfile文件中只能有一个CMD指令,如果有多个,则只有最后一个会生效。

docker run 和 docker-compose 配置挂载 Volume 并运行 nginx

1.先在宿主机创建挂载目录:mkdir -p /data/nginx/{conf,conf.d,html,logs}

2.然后把文件 nginx.conf 文件放到 /data/nginx/conf/

3.把子配置文件 default.conf 放到 /data/nginx/conf.d/

4.弄一个 index.html 放到 /data/nginx/html/

阅读更多 >>>  docker容器日志存储多久

5.nginx 日志会在运行后存到 /data/nginx/logs/ 目录

6.1 然后 docker run 直接运行 nginx:

6.2 另外如果用 docker-compose 或 swarm 起服务,docker-compose.yml 文件如下:

docker-compose up -d 启动服务

修改 nginx 配置文件后重新创建容器:docker-compose up -d --force-recreate

广告: 油囊

如何查看docker 里某个容器的的启动命令

你好,操作命令如下:
Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义(译者注:docker run可以控制一个容器运行时的行为,它可以覆盖docker build在构建镜像时的一些默认配置),这也是为什么run命令相比于其它命令有如此多的参数的原因。
命令格式
最基本的docker run命令的格式如下:
$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
如果需要查看[OPTIONS]的详细使用说明,请参考Docker关于OPTIONS的章节。这里仅简要介绍Run所使用到的参数。OPTIONS总起来说可以分为两类:
设置运行方式:
决定容器的运行方式,前台执行还是后台执行;
设置containerID;
设置网络参数;
设置容器的CPU和内存参数;
- 设置权限和LXC参数;
设置镜像的默认资源,也就是说用户可以使用该命令来覆盖在镜像构建时的一些默认配置。
docker run [OPTIONS]可以让用户完全控制容器的生命周期,并允许用户覆盖执行docker build时所设定的参数,甚至也可以修改本身由Docker所控制的内核级参数。
Operator exclusive options
当执行docker run时可以设置以下参数:
Detached vs Foreground
Detached (-d)
- Foreground
Container Identification
Name (--name)
- PID Equivalent
IPC Setting
Network Settings
Clean Up (--rm)
Runtime Constraints on CPU and Memory
Runtime Privilege, Linux Capabilities, and LXC Configuration
接下来我们依次进行介绍。
Detached vs foreground
当我们启动一个容器时,首先需要确定这个容器是运行在前台还是运行在后台。
-d=false: Detached mode: Run container in the background, print new container id
Detached (-d)
如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口。但你可以通过执行docker attach来重新附着到该容器的回话中。需要注意的是,容器运行在后台模式下,是不能使用--rm选项的。
启动的话是 docker start +容器的ID/名称
查看 docker ps -a选项列出最近一次启动的容器
菜鸟一枚,错勿怪
1,在容器外部,物理机上,可以用docker inspect查看或者,docker inspect container。
2,如果在容器内部。可以用 ps -fe 查看。其中1号进程就是启动命令。
3,Docker会在隔离的容器中运行进程。当运行docker run命令时,Docker会启动一个进程,并为这个进程分配其独占的文件系统、网络资源和以此进程为根进程的进程组。在容器启动时,镜像可能已经定义了要运行的二进制文件、暴露的网络端口等,但是用户可以通过docker run命令重新定义(译者注:docker run可以控制一个容器运行时的行为,它可以覆盖docker build在构建镜像时的一些默认配置),这也是为什么run命令相比于其它命令有如此多的参数的原因。4,命令格式
5,最基本的docker run命令的格式如下:$ sudo docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
6,如果需要查看[OPTIONS]的详细使用说明,请参考Docker关于OPTIONS的章节。这里仅简要介绍Run所使用到的参数。OPTIONS总起来说可以分为两类:
设置运行方式:
决定容器的运行方式,前台执行还是后台执行;
设置containerID;
设置网络参数;
设置容器的CPU和内存参数;
设置权限和LXC参数;
设置镜像的默认资源,也就是说用户可以使用该命令来覆盖在镜像构建时的一些默认配置。
7,docker run [OPTIONS]可以让用户完全控制容器的生命周期,并允许用户覆盖执行docker build时所设定的参数,甚至也可以修改本身由Docker所控制的内核级参数。

详解Docker——你需要知道的Docker进阶知识五

Dockerfile 是一个文本文件,其中包含了构建 Docker 镜像需要执行的命令序列。使用 docker build 命令从 Dockerfile 中读取指令来构建镜像。

构建镜像时,该过程的第一件事是将 Dockerfile 文件所在目录下的所有内容发送给 Docker 守护进程。所以大多数情况下,最好创建一个新的目录,在其中保存 Dockerfile ,以及构建镜像所需的其它文件。Dockerfile 文件所在目录也被称为构建上下文(context)。

使用 FROM 指令指定一个基础镜像,后续指令将在此镜像基础上运行:

在 Dockerfile 中可以指定一个用户,后续的 RUN , CMD 以及 ENTRYPOINT 指令都会使用该用户身份去执行,该用户必须已存在。

除了指定用户之外,还可以使用 WORKDIR 指定当前工作目录(CWD), RUN , CMD , COPY , ADD 指令将在指定的工作目录中执行。

RUN 指令用于执行命令,该指令有两种形式:

例如我们执行更新命令:

CMD 的使用方式跟 RUN 类似,不过在一个 Dockerfile 文件中只能有一个 CMD 指令,如果有多个,则只有最后一个会生效。该指令指定了启动容器时要执行的命令,例如:

可以在 docker run 时指定命令来覆盖默认的 CMD 命令,比如 docker run image echo"hello shiyanlou" 。

CMD 指令还有一种特殊用法。在 Dockerfile 中,如果使用 ENTRYPOINT 指令指定了入口命令,则 CMD 指令的内容会作为 ENTRYPOINT 指令的参数:

ENTRYPOINT 指令会覆盖 CMD 指令作为容器运行时的默认指令,并且该指令不会被 docker run 时指定的指令覆盖,如下示例:

上述文件构建出来的镜像,使用 docker run image 等同于 docker run image ls-a-l 。使用 docker run image-i-s 等同于 docker run image ls-a-i-s 。即 CMD 指令的值会被当作 ENTRYPOINT 指令的参数附加到 ENTRYPOINT 指令的后面,只有 CMD 指令可以被覆盖。

COPY 和 ADD 都用于将构建上下文中的文件,目录等复制到镜像中。使用方式如下:

`` 可以指定多个,但是其路径不能超出构建上下文范围,即必须在 Dockerfile 同级或子目录中。

不需要预先存在,不存在时会自动创建,如果使用相对路径,则 为相对于工作目录的路径。

COPY 和 ADD 的不同之处在于,ADD 可以添加远程文件,并且 `` 可以是 gzip 或 tar 等格式的压缩文件,添加时会自动进行解压。

ENV 指令用于设置环境变量:

VOLUME 指令指定要创建的挂载路径,在容器运行时,将为每个挂载路径创建一个匿名卷并挂载上去:

上述指令将会在容器运行时,创建两个匿名卷,并分别挂载到容器中的 /data1 和 /data2 路径。

学习了上面这些常见的 Dockerfile 指令之后,可以使用这些指令来构建一个镜像。如下所示,构建一个提供 ssh 服务的镜像:

构建镜像

查看镜像

启动容器

查看已经启动的容器

测试远程登录

Compose 是运行由多个容器组成的 Docker 应用的工具,使用 Compose 可以一次启动一组有关联的服务,每个服务由来自同一镜像的单个或多个容器组成。

在复杂应用中,应用一般由多个服务(service)组成,例如一个网站后台通常包含 Web 服务、数据库服务、缓存服务、消息队列服务等。

使用 Compose 的步骤如下:

目前有三种版本的 Compose 文件格式:

下载 docker-compose-Linux-x86_64

下载成功后,为了方便使用,可以将其添加到 PATH 路径下

执行完成后,就能够在终端下直接使用 docker-compose 命令了:

接下来我们将创建一个 Web 应用,该应用包含两个容器:

项目目录结构如下:

首先编辑 app/web/web.py 文件,写入下面的内容:

上述代码创建了一个简单的 Web 应用。该应用会连接 redis 服务,在访问 / 页面时,自动将变量 number 加 1。

编辑 app/web/requirements.txt 文件,输入如下内容:

requirements.txt 文件存放了 Web 应用依赖的第三方库包的名称和版本信息。

编辑 app/web/Dockerfile 文件,添加如下内容

上述 Dockerfile 定义了 Web 应用镜像,该镜像基于 python:2.7 基础镜像,在其基础上安装了应用依赖的库包,并通过 CMD 指令指定了应用的启动命令。

编辑 app/docker-compose.yml 文件:

该 docker-compose.yml 文件定义了两个服务,分别为 web 和 redis 服务,并且配置了 web 服务的端口映射和挂载目录。 depends_on 定义了依赖关系,被依赖的服会先启动。

进入 app 目录,执行 docker-compose up 命令来启动应用:

启动成功后,就可以打开网址 127.0.0.1:8001 来访问 Web 应用了。

另外一些命令:

网站数据信息

"docker run,Docker常用命令大全"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:docker run,Docker常用命令大全的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!