Open zshuangyan opened 6 years ago
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
选项设置 -d 使容器在后端运行,不设置的情况下终端会连接到容器的stdout和stderr
-p 设置端口映射规则,执行下面的操作后,可以通过http://127.0.0.1:40000 访问容器中运行的web服务
docker run -p 40000:80 web_app
-i 交互式地运行程序,一般和-t一起使用,用户可以和容器进行命令行交互
-v 如果容器内运行的程序需要数据持久化,那么可以把容器内部的目录挂载到主机目录上
docker run -v $PWD/data:/var/jenkins_home jenkins
这样,容器中/var/jenkins_home目录的所有内容就保存在了主机的$PWD/data目录下,需要注意权限问题
-u 设置命令执行时使用的用户,可以通过用户名和UID两种方式来设置,此选项会覆盖Dockerfile中的USER配置
--name 设置容器的名称,未指定的情况下docker daemon会随机分配一个名称给容器
以非交互方式运行容器时,我们时常需要进入容器执行一些命令进行调试,下面介绍几种常见的方法:
docker attach <container_name_or_id>
但是使用docker attach命令会有一个副作用。当多个窗口使用该命令进容器的时候所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他的窗口再也无法进行其他的操作。
首先,计算出你要进入容器的PID
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_id>)
然后进入容器:
nsenter --target $PID --mount --uts --ipc --net --pid
nsenter主要用于替代SSH 用作登入容器
在docker 1.3.x之后的版本提供了一种新的方式进入容器,可以用以替代nsenter
docker exec -it <container_name_or_id> /bin/bash
使用docker attach或者docker exec命令时,直接按Ctrl-c时退出容器时,会导致容器停止。可以通过Ctrl-p和Ctrl-q命令一起使用来退出容器而保证容器不停止。使用nsenter命令时,想要退出docker还没有好的解决方法,目前是通过关闭终端来解决的。
查看docker文件系统的改变
$ docker diff eloquent_poitras C /tmp A /tmp/jetty-0.0.0.0-8080-war-_-any-3458509152221096415.dir
查看曾经输出到容器中的STDERR 或STDOUT 的内容
查看容器端口映射情况
$ docker port $ID 6379 0.0.0.0:32768
运行容器
选项设置 -d 使容器在后端运行,不设置的情况下终端会连接到容器的stdout和stderr
-p 设置端口映射规则,执行下面的操作后,可以通过http://127.0.0.1:40000 访问容器中运行的web服务
-i 交互式地运行程序,一般和-t一起使用,用户可以和容器进行命令行交互
-v 如果容器内运行的程序需要数据持久化,那么可以把容器内部的目录挂载到主机目录上
这样,容器中/var/jenkins_home目录的所有内容就保存在了主机的$PWD/data目录下,需要注意权限问题
-u 设置命令执行时使用的用户,可以通过用户名和UID两种方式来设置,此选项会覆盖Dockerfile中的USER配置
--name 设置容器的名称,未指定的情况下docker daemon会随机分配一个名称给容器
进入容器
以非交互方式运行容器时,我们时常需要进入容器执行一些命令进行调试,下面介绍几种常见的方法:
docker attach
但是使用docker attach命令会有一个副作用。当多个窗口使用该命令进容器的时候所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他的窗口再也无法进行其他的操作。
nsenter
首先,计算出你要进入容器的PID
然后进入容器:
nsenter主要用于替代SSH 用作登入容器
docker exec
在docker 1.3.x之后的版本提供了一种新的方式进入容器,可以用以替代nsenter
退出容器
使用docker attach或者docker exec命令时,直接按Ctrl-c时退出容器时,会导致容器停止。可以通过Ctrl-p和Ctrl-q命令一起使用来退出容器而保证容器不停止。使用nsenter命令时,想要退出docker还没有好的解决方法,目前是通过关闭终端来解决的。
容器信息
docker diff
查看docker文件系统的改变
docker logs
查看曾经输出到容器中的STDERR 或STDOUT 的内容
docker port
查看容器端口映射情况