2020-03-23 17:50:40
一般情况下,退出一个Docker容器后它仍然会存在。这允许你再次运行容器,查看其文件系统等。不过,有时候你可能想运行容器后马上自动删除。例如想执行一个命令或者查看一个文件。Docker为此提供了一个–rm命令行参数来实现它。
docker run --rm ubuntu cat /etc/hosts
这会从ubuntu镜像创建一个容器,显示/etc/hosts的内容,然后退出后立即销毁容器。
这避免了你只是想做下实验后再清理容器的麻烦。
注意:–rm选项在与-d(–detach)选项时失效。
当使用–rm选项时,Docker被删除后也会删除与之关系的volumes。这与执行docker rm -v my-container类似。只删除未命名的volumes。
例如,运行docker run -it –rm -v /etc -v logs:/var/log centos /bin/produce_some_logs,/etc数据卷会被删除,/var/log则不会。
docker run --restart=always -d <container>
默认情况下,当Docker守护进程重启时(如主机系统重启),容器不会跟着重启。Docker为容器提供了一个重启策略,选项为–restart=always。使用此选项一旦Docker守护里程重启后,容器也会重启。
不过,如果是手动停止的容器(如docker stop
默认下,使用docker run创建容器时会分配一个随机的名称,如small_roentgen或modest_dubinsky。这种名称对识别容器不会有任何帮助。我们可以通过–name选项来指定一个有意义的名称。
docker run --name my-ubuntu ubuntu:14.04
名称必须是唯一的。如果指定了一个与正在运行容器的名称一样,docker会报错并且不会创建任何容器。
为了让容器在后台运行,我们可以在生成容器时使用-d选项。
docker run -d busybox top
Docker 数据卷(volume)其实是一个文件或者目录,它在容器生命周期结束后还会保留。我们可以挂载宿主机的一个文件或目录作为Docker的数据卷。
使用-v选项添加一个数据卷:
docker run -d -v "/data" awesome/app bootstrap.sh
这会创建一个数据卷并把它挂载到容器的/data目录。
挂载宿主文件或目录到容器:
docker run -d -v "/home/foo/data:/data" awesome/app bootstrap.sh
这会把宿主的/home/foo/data目录挂载到容器里的/data目录。这个操作就会Linux的mount命令。因此这个挂载只存在于容器的生命周期。更改宿主/home/foo/data的文件会立即影响到容器的/data对应的文件里,因为它们是指向硬盘上的同一个文件。
可以在创建数据卷时指定一个名称,而不只是主机目录路径。
docker run -d -v "my-volume:/data" awesome/app bootstrap.sh
命名的数据卷创建后,可以通过此名称来与其它容器共享。
使用-it选项来以交互方式运行容器。
$ docker run -it ubuntu:14.04 bash root@8ef2356d919a:/# echo hi hi root@8ef2356d919a:/#
-i选项保持STDIN打开,而-t则分配一个伪TTY。
我们可以使用如下命令来登录正在运行的容器
docker exec -it jovial_morse bash
Docker命令行参考(6) – Docker commit提交容器的更改创建新镜像
07-15
Docker命令行参考(14) – Docker attach附着到一个运行中的容器
07-19
Docker命令行参考(18) – Docker exec在运行中的容器执行一个命令
06-02
Docker命令行参考(21) – Docker logs获取容器的日志
02-27
Docker命令行参考(22) – Docker pause暂停容器内所有的进程
02-21
Docker命令行参考(26) – Docker stats实时显示容器资源使用统计
06-21
Docker命令行参考(4) – Docker inspect显示容器或镜像相关信息
07-19
Docker run参考(1) – 一般格式
05-13
Docker run参考(8) – 退出状态码
05-15
Dockerfile参考(1) – 用法
05-22
Dockerfile参考(2) – 格式
05-31
Docker命令行参考(11) – Docker load从tar归档文件或STDIN导入镜像
07-20
Docker命令行参考(2) – Dockerd启动Docker daemon
05-03
Docker使用示例(3) – 调试容器
06-16
Docker使用示例(4) – 清理容器和镜像
06-10
Docker创建的集群下使用ansible部署zookeeper
04-26
Docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀
06-26
Docker run参考(3) – 容器标识
04-03
Docker实践(19) – 保留容器的bash历史记录
04-21
Docker实践(2) – 以守护进程运行容器
03-08