Docker快速入门指南(3)

-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 create

docker create命令与docker run指令极为相似,区别在于docker run创建容器后自动启动容器, 而docker create不自动启动容器需要使用docker start命令来启动。

docker ps

docker ps命令用于显示容器的信息,默认情况下显示运行中的容器:

finley@mbp $ docker ps

CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
3a5748eef653   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 start

docker 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 exec

docker 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 attach

docker attach命令用于与容器连接, 即将容器输出流重定向到终端,终端输入流重定向到容器。

$ docker attach my_ubuntu # 再按一次回车 root@c10921921bfb:/#

当容器没有输出时终端中没有回显,可能令用户误以为卡死。 attach之后再次输入回车, bash将回显命令行提示符。

attach状态下ctrl + c快捷键会发送SIGKILL信号中止容器, 而ctrl + p, ctrl + q快捷键会退出attach容器继续运行。

docker stop

docker stop用于终止容器的运行

$docker stop redis-server

docker stop命令会先发送SIGTERM信号要求容器中的进程执行退出操作,若达到超时时间(默认10s)容器仍未退出则会发送SIGKILL信号强制退出。

-t或-time选项可以秒为单位设置强制杀死之前的等待时间:

$docker stop -t 20 redis-server docker kill

docker kill命令将直接向容器发送SIGKILL命令停止容器:

$docker kill redis-server

-s或--signal选项可以向容器发送指定的信号:

docker kill -s SIGINT my_ubuntu docker cp

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3ca3f0b8ec255e6a4b4a35f1c7319039.html