前言

容器是Docker的三大核心概念之一。简单地说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。通过这篇文章,我们来讲讲Docker容器的一些常用命令,如创建,停止,重启,暂停等等。

原创声明

本文发布于掘金号【Happyjava】。Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:http://blog.happyjava.cn。欢迎转载,但须保留此段声明。

创建容器

新建容器

命令如下:

docker create <image>

使用create 命令创建的容器,默认处于停止状态,需要我们手动去启动容器。

新建并运行容器

命令如下:

docker run <image>

通过run命令创建的容器,默认是会运行的。

常用参数如下:

-i 让容器的标准输入保持打开

-t 分配一个伪终端

-d 容器处于守护进程运行

--name 设置容器的名字

-p 可以映射宿主机端口至容器端口,如 -p 8080:8081 ,左边为宿主机端口,右边为容器端口

-v 可以挂在宿主机目录至容器目录,如-v /data:/tmp/data,左边为宿主机目录,右边为容器目录。

如,一条实际运行容器的命令:

docker run -it -d --name my_ubuntu -p 8088:22 -v /root/ubuntu_data:/data ubuntu:latest /bin/bash

容器管理

查看容器列表

命令如下:

docker ps

docker ps 是查看正在运行的容器,可以添加-a 参数,查看所有容器的信息。

停止容器

停止容器的命令:

docker stop <container_name/id>

启动容器

docker start <container_name/id>

重启容器

docker restart <container_name/id>

删除容器

命令如下:

docker rm <container_id/name>

如果是正在运行的容器,会提示删除失败,可以通过 -f 参数强制删除。例如,删除正在运行的 my_ubuntu 容器:

docker rm -f my_ubuntu

容器日志

可以通过如下命令查看容器的日志:

docker logs <id/name>

暂停容器

docker pause <id/name>

通过docker ps 命令可以查看到容器的状态

恢复暂停的容器

docker unpause <id/name>

进入容器

如果我们创建容器时,使用了 -d 参数,那么容器就会在后台运行。那么,我们可以通过 docker attach 命令和 docker exec 命令连接到容器。

docker attach命令

docker attach 命令使用如下:

docker attach <container_name/id>

如,我这里连接创建的名为 my_ubuntu 的容器。

docker attach my_ubuntu

进入容器后,其实就跟ssh登录服务器效果似乎一样的:

docker attach连接容器,有一个致命的缺点,那就是当多个窗口同时attach到同一个容器时,所有窗口都会同步显示,当某个窗口阻塞了,那么所有的窗口都会被阻塞掉。例如,我通过两个终端attach到这个my_ubuntu容器,所有的操作都会被同步:

我在一个窗口输入东西,另外一个窗口也会同步。

也是因为这样,所以attach命令是比较少用的。

docker exec 命令

docker exec 本质上不是连接容器,而是在容器中执行命令,其用法如下:

docker exec -it <container_name/id> <exec>

其中<exec>是需要执行的命令,如在my_ubuntu容器下执行 /bin/bash 命令:

docker exec -it my_ubuntu /bin/bash

执行结果:

/bin/bash 这个命令,其实就是运行一个bash终端,所以我们就可以通过在容器中执行 /bin/bash命令来连接容器。

查看容器变更

容器也是支持查看变更的内容的,命令如下:

docker diff <name/id>

如,查看my_ubuntu的变更:

有三个符号,它们分别是:

提交容器

Docker也可以像git一样,可以把变动提交为新的镜像。命令如下:

docker commit <container_id/name> repo/name:tag

如,我把本地的my_ubuntu提交:

docker commit my_ubuntu test/ubuntu:personal

然后查看镜像:

提交后的镜像,可以推送到仓库上,方便测试部署等。

总结

容器作为Docker的三大核心概念之一,其有很多操作,本文也难以一一列举,只是列举出了本人认为比较常用的一些命令。

关注公众号领资料

搜索公众号【Happyjava】,回复【电子书】和【视频】,即可获取大量优质电子书和大数据、kafka、nginx、MySQL等视频资料

【快学Docker】快速创建容器,容器常用命令的更多相关文章

  1. docker快速创建轻量级的可移植的容器(一)

    系列其他内容 docker快速创建轻量级的可移植的容器✓ docker&flask快速构建服务接口 docker&uwsgi高性能WSGI服务器生产部署必备 docker&gu ...

  2. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  3. docker快速搭建几个常用的第三方服务

    本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch: 本篇涉及内容深 ...

  4. Docker小白到实战之常用命令演示,通俗易懂

    前言 上一篇大概认识了Docker,主要是从概念.架构.优点及流程方面进行阐述,并进行安装和体验: 接下来就开始进行实操学习,在演示过程中会针对关键的知识点进行归纳和总结,这里先从常用命令说起,来吧, ...

  5. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

  6. docker 笔记 (5)常用命令

    images    显示镜像列表 history   显示镜像构建历史 commit    从容器创建新镜像 build     从 Dockerfile 构建镜像 tag       给镜像打 ta ...

  7. Docker系列(7)- 常用命令(3) | 容器命令

    容器命令 说明: 有了镜像才可以创建容器:下载一个centos镜像进行练习,相当于在Linux里面再见一个Linux虚拟机 [root@localhost ~]# docker pull centos ...

  8. Docker容器操作中常用命令集合

    docker pull 从仓库获取所需要的镜像 docker images 显示本地已有的镜像. docker commit 提交更新后的副本. docker build 创建一个新的镜像 ADD 复 ...

  9. docker 容器管理常用命令

    Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: create Create a new container 创建一个容器: ...

随机推荐

  1. mybatis(六):设计模式 - 模板方法模式

  2. selenium参数化-ddt模块

    DDT介绍: DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例来使其倍增,并使它显示为多个测试用例.要使用DDT需要安装,安装命令:pip install ddt 使用方法: dd. ...

  3. xshell配置---文件上传命令rz和下载命令sz

    1.下载安装包 方法一:手动下载安装 1)下载安装包:lrzsz-0.12.20.tar.gz 官网下载地址:http://www.ohse.de/uwe/releases/lrzsz-0.12.20 ...

  4. 使用Eclipse远程调试云服务器上的微信公众项目

    云服务器系统:centos 7.3 如何在Eclipse上调试我们在云服务器上的项目呢,下面介绍一下步骤:   1.因为root账号不支持远程调试,首先需要在linux上创建一个新的用户,然后用该用户 ...

  5. .h头文件 .lib库文件 .dll动态链接库文件关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  6. c++中const变量定义与头文件包含的有关问题

    在使用C++进行程序开发的时候,有个常识我们很熟悉,就是把类的定义写在.h文件中,把类的具体实现写在.cpp文件中.这毫无疑问是对的.但我们很少去思考为什么要这样做,本文结合自己的学习体会,对头文件及 ...

  7. 1.java-谈谈接口

    1.面向接口给程序带来的便利和灵活性 List li = new ArrayLIst(); 为什么不写成 ArrayList li = new ArrayLIst(); 2.接口就相当于一些类的规范, ...

  8. Ubuntu系统备份还原教程

    一.备份 很多人有备份系统的习惯,以防系统挂.Windows下可以用DISM创建一个系统镜像,在Ubuntu下,我们可以使用squashfs-tools创建系统镜像. 准备工作 可启动LiveCD一份 ...

  9. SpringBoot集成SwaggerUI

    1.在module下的pom.xml中引用相关插件 引用swagger插件并用参数化版本信息,如下 <?xml version="1.0" encoding="UT ...

  10. ILM --interface logic model

    1.描述接口逻辑的模型. 2.包括 netlist  spef sdc def 3.所有以上文件只描述和接口相关的逻辑,其他逻辑一概排除 3.用于STA/PR/DC的hierachical flow, ...