docker run会先找本地镜像,如果找不到,就自动去远程仓库拉取镜像(默认拉取latest版本),然后使用这个镜像来启动容器。命令详细格式如下:
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
一般常用的OPTIONS有下面的几个。
因此,如果需要启动一个交互式ubuntu容器,那么通常如下所示:
sudo docker run -it ubuntu /bin/bash
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。要退出终端,直接输入 exit
交互式方式启动的容器,在终端输入exit会导致容器停止,而按下ctrl+p+q退出,容器不会退出。
通常,大多数时候,我们都是希望启动一个后台运行的容器。这时候的启动命令如下:
sudo docker run -d ubuntu
注意,这时候,你通过docker ps查看,会发现ubuntu并没有被启动,这是因为 Docker容器后台运行,就必须有一个前台进程。这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。
因此,如果我们启动的是redis容器,那么它就不会立即退出,因为redis会被以前台进程的形式执行。所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,不要停止掉容器。
该命令用来启动一个已经停止的docker容器,格式如下:
sudo docker start 容器名(NAMES)或者容器ID(CONTAINER ID)
例如,
b8a32c0d9edb redis "docker-entrypoint.s…" 12 minutes ago Exited (0) 2 minutes ago redis
我们使用名字来重新启动这个容器,
sudo docker start redis
在例如,
b3cc50a235cd ubuntu "/bin/bash" 27 minutes ago Exited (0) 27 minutes ago thirsty_hodgkin
我们使用容器ID来启动容器:
sudo docker start b3cc50a235cd
该命令用来重启容器,格式如下:
sudo docker restart 容器名或者容器ID
该命令用来停止同期,格式如下:
sudo docker stop 容器名或者容器ID
该命令用来停止同期,格式如下:
sudo docker kill 容器名或者容器ID
docker kill和docker stop的区别是:docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。docker kill,发送SIGKILL信号,应用程序直接退出。
删除已停止运行的容器,格式如下:
sudo docker rm 容器名或者容器ID
一次性删除所有容器:
sudo docker rm $(sudo docker ps -a -q)
对于后台运行的容器,我们我们看到其终端打印的信息,因此docker提供了docker logs来查看日志。命令格式如下:
sudo docker logs 容器名或者容器ID
该命令用来查看容器内运行的进程。命令格式如下所示:
sudo docker top 容器名或者容器ID
该命令用来获取容器/镜像的元数据。命令格式如下所示:
sudo docker inspect 容器名或者容器ID
该命令可以进入在后台运行的容器中,命令格式如下所示:
sudo docker [OPTIONS] 容器名或者容器ID [COMMAND]
常用的格式如下:
sudo docker exec -it f184ae /bin/bash
这时候会打开一个新的伪终端,然后我们就可以使用伪终端来进行交互操作。之后使用exit退出伪终端,也不会导致容器停止运行,因为这个伪终端是exec新打开的。
该命令可以进入在后台运行的容器中,和exec不同的地方是,attach直接进入容器启动命令的终端,不会打开一个新的终端,这样你退出的时候,就会导致容器退出。因此,该命令不常用。命令格式如下:
sudo docker attach 容器名或者容器ID
该命令可以用来在容器和宿主机之间进行文件拷贝。命令格式如下:
docker export是用来将container的文件系统进行打包的,容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。命令用法:
sudo docker export -o www.tar 9540a9d16597
上述命令将ID为9540a9d16597的容器打包成为www.tar的镜像包。也可以借助Linux的重定向操作,例如:
sudo docker export 9540a9d16597 > qqq.tar
该命令用于从docker export导出的文件中创建镜像。命令格式如下:
sudo docker import 打包文件 REPOSITORY:TAG
例如:
sudo docker import qqq.tar redis:1.0.1
该命令用于提交容器副本,使之成为一个新的镜像。命令格式如下:
sudo docker commit -m="描述信息" -a="作者" 容器ID 要创建的镜像名:[标签名]
例如:
sudo docker commit -m="new_ubuntu" -a="zy010101" c08cf729f094 ubuntu:1.2.3
这样,就可以借助docker commit命令来生成功能更加强大的镜像。例如,你可以在容器中安装vim,然后使用docker commit提交容器副本,生成一个带有vim的新镜像。 这主要受益于Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有