还在使用虚拟机?30分钟教你快速入门Docker( 三 )


还在使用虚拟机?30分钟教你快速入门Docker

文章插图
 
注意的是,docker run 每次使用都会创建一个新的容器,因此,我们以后再次启动这个容器时,只需要使用命令 docker start 即可 。这里,docker start 的作用在用重新启动已存在的镜像,而 docker run 包含将镜像放入容器中 docker create,然后将容器启动 docker start,如图所示 。
 
还在使用虚拟机?30分钟教你快速入门Docker

文章插图
 
图片来源互联网
现在,我们可以在上面的案例的基础上,通过 exit 命令关闭 Docker 容器 。当然,如果我们运行的是后台的守护进程,我们也可以通过 docker stop web 来停止 。注意的是,docker stop 和 docker kill 略有不同,docker stop 发送 SIGTERM 信号,而 docker kill 发送SIGKILL 信号 。然后,我们使用 docker start 重启它 。
docker start webDocker 容器重启后会沿用 docker run 命令指定的参数来运行,但是,此时它还是后台运行的 。我们必须通过 docker attach 命令切换到运行交互式容器 。
docker attach web4. 不止如此,还有更多命令
Docker 提供了非常丰富的命令 。所谓一图胜千言,我们可以从下面的图片了解到很多信息和它们之前的用途 。(可以直接跳过阅读,建议收藏,便于扩展阅读)
 
还在使用虚拟机?30分钟教你快速入门Docker

文章插图
 
图片来源互联网
如果希望获取更多信息,可以阅读官方使用文档 。
CommandDescriptiondocker attachAttach local standard input, output, and error streams to a running containerdocker buildBuild an image from a Dockerfiledocker builderManage buildsdocker checkpointManage checkpointsdocker commitCreate a new image from a container’s changesdocker configManage Docker configsdocker containerManage containersdocker cpCopy files/folders between a container and the local filesystemdocker createCreate a new containerdocker deployDeploy a new stack or update an existing stackdocker diffInspect changes to files or directories on a container’s filesystemdocker engineManage the docker enginedocker eventsGet real time events from the serverdocker execRun a command in a running containerdocker exportExport a container’s filesystem as a tar archivedocker historyShow the history of an imagedocker imageManage imagesdocker imagesList imagesdocker importImport the contents from a tarball to create a filesystem imagedocker infoDisplay system-wide informationdocker inspectReturn low-level information on Docker objectsdocker killKill one or more running containersdocker loadLoad an image from a tar archive or STDINdocker loginLog in to a Docker registrydocker logoutLog out from a Docker registrydocker logsFetch the logs of a containerdocker manifestManage Docker image manifests and manifest listsdocker networkManage networksdocker nodeManage Swarm nodesdocker pausePause all processes within one or more containersdocker pluginManage pluginsdocker portList port mappings or a specific mapping for the containerdocker psList containersdocker pullPull an image or a repository from a registrydocker pushPush an image or a repository to a registrydocker renameRename a containerdocker restartRestart one or more containersdocker rmRemove one or more containersdocker rmiRemove one or more imagesdocker runRun a command in a new containerdocker saveSave one or more images to a tar archive (streamed to STDOUT by default)docker searchSearch the Docker Hub for imagesdocker secretManage Docker secretsdocker serviceManage servicesdocker stackManage Docker stacksdocker startStart one or more stopped containersdocker statsDisplay a live stream of container(s) resource usage statisticsdocker stopStop one or more running containersdocker swarmManage Swarmdocker systemManage Dockerdocker tagCreate a tag TARGETIMAGE that refers to SOURCEIMAGEdocker topDisplay the running processes of a containerdocker trustManage trust on Docker imagesdocker unpauseUnpause all processes within one or more containersdocker updateUpdate configuration of one or more containersdocker versionShow the Docker version informationdocker volumeManage volumesdocker waitBlock until one or more containers stop, then print their exit codes
官方阅读链接:https://docs.docker.com/engine/reference/commandline/docker/
5. 进阶:仓库与软件安装的简化
还记得笔者在文章开头介绍的「镜像、容器和仓库」吗?Docker 的仓库用于存放镜像 。我们可以从中心仓库下载镜像,也可以从自建仓库下载 。同时,我们可以把制作好的镜像从本地推送到远程仓库 。
首先,笔者先引入一个知识点:Docker 的镜像就是它的文件系统,一个镜像可以放在另外一个镜像的上层,那么位于下层的就是它的父镜像 。所以,Docker 会存在很多镜像层,每个镜像层都是只读的,并且不会改变 。当我们创建一个新的容器时,Docker 会构建出一个镜像栈,并在栈的最顶层添加一个读写层,如图所示 。


推荐阅读