-v选项可以将宿主机上某个目录挂载到容器中的某个目录
$ ls ~/myvol history.txt $ docker run -it -v ~/myvol:/app ubuntu root@e690c508219e:/# ls /app history.txt上述指令将宿主机目录~/myvol挂载到镜像的/app目录下,/app目录下原来的内容会被隐藏而是显示宿主机目录~/myvol下的内容。
这种方式我们称为在容器上挂载了数据卷,对数据卷的读写独立于容器之外:
容器对数据卷的修改将立即存储到数据卷所在的(即宿主机的文件系统)上
除非指明删除数据卷,否则容器删除不会对数据卷产生影响
其它进程对数据卷的修改将立即生效
若数据卷~/myvol或挂载点/app不存在的时候, docker会自动创建空目录。
docker提供了独立于容器的数据卷管理功能,参考。
为容器命名
每个容器都拥有一个唯一的CONTAINER ID来标识,但ID不便于记忆和使用。 因此在docker run创建容器时可以使用--name选项来为容器指定一个名称。
在某个dockerd中容器名称是唯一的, 我们可以使用容器名来唯一指定容器。
示例:docker run --name my_ubuntu -it ubuntu
退出时自动删除
docker run --rm选项会在容器退出时自动删除容器。 使用该命令时需谨慎, 容器一旦删除便不可恢复。
自定义工作目录
docker run -w PATH选项会在启动容器时,使用PATH参数指定的路径作为工作目录。
docker createdocker create命令与docker run指令极为相似,区别在于docker run创建容器后自动启动容器, 而docker create不自动启动容器需要使用docker start命令来启动。
docker psdocker ps命令用于显示容器的信息,默认情况下显示运行中的容器:
finley@mbp $ docker ps
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES3a5748eef653 redis "docker-entrypoint..." 3 hours ago Up 3 hours 0.0.0.0:6379->6379/tcp redis-server
c10921921bfb ubuntu "/bin/bash" 3 hours ago Up 52 seconds my_ubuntu
-a选项可以显示包括已停止容器在内的所有容器信息。
docker startdocker start命令用于启动一个已停止的容器,默认情况下不与容器连接(attach)也不将输入重定向到容器。
$ docker run --name redis-server -p 6379:6379 redis $ docker stop redis-server # 此时已经存在一个名为redis-server的已停止容器 $ docker start redis-server redis-server $ redis-cli 127.0.0.1:6379>若使用-a或--attach选项将docker start与容器连接(attach), 终端将回显容器输出。
-i或--interactive选项则会将输入重定向到容器。
$ docker run --name my_ubuntu -it ubuntu root@c10921921bfb # exit # 此时已经存在一个名为my_ubuntu的已停止容器 $ docker start -ai my_ubuntu root@c10921921bfb:/# docker execdocker exec用于让一个正在运行的容器执行命令,命令执行完成后docker exec将返回容器继续运行。
$ docker run --name my_ubuntu -d ubuntu $ docker exec my_ubuntu ls home bin ...默认情况下docker exec与容器连接,-d或--detach选项可以不与容器连接而在后台执行命令。
与docker run命令类似, -i选项用于将标准输入重定向到容器以便接收用户输入, -t选项可以打开终端。
$docker exec -it my_ubuntu bash root@c10921921bfb:/# docker attachdocker attach命令用于与容器连接, 即将容器输出流重定向到终端,终端输入流重定向到容器。
$ docker attach my_ubuntu # 再按一次回车 root@c10921921bfb:/#当容器没有输出时终端中没有回显,可能令用户误以为卡死。 attach之后再次输入回车, bash将回显命令行提示符。
attach状态下ctrl + c快捷键会发送SIGKILL信号中止容器, 而ctrl + p, ctrl + q快捷键会退出attach容器继续运行。
docker stopdocker stop用于终止容器的运行
$docker stop redis-serverdocker stop命令会先发送SIGTERM信号要求容器中的进程执行退出操作,若达到超时时间(默认10s)容器仍未退出则会发送SIGKILL信号强制退出。
-t或-time选项可以秒为单位设置强制杀死之前的等待时间:
$docker stop -t 20 redis-server docker killdocker kill命令将直接向容器发送SIGKILL命令停止容器:
$docker kill redis-server-s或--signal选项可以向容器发送指定的信号:
docker kill -s SIGINT my_ubuntu docker cp