前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【快学Docker】快速创建容器,容器常用命令

【快学Docker】快速创建容器,容器常用命令

作者头像
Happyjava
发布2019-07-18 17:04:46
8370
发布2019-07-18 17:04:46
举报
文章被收录于专栏:Happy的分享Happy的分享

前言

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

原创声明

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

创建容器

新建容器

命令如下:

代码语言:javascript
复制
docker create <image>

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

新建并运行容器

命令如下:

代码语言:javascript
复制
docker run <image>

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

常用参数如下:

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

-t 分配一个伪终端

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

--name 设置容器的名字

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

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

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

代码语言:javascript
复制
docker run -it -d --name my_ubuntu -p 8088:22 -v /root/ubuntu_data:/data ubuntu:latest /bin/bash

容器管理

查看容器列表

命令如下:

代码语言:javascript
复制
docker ps 

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

停止容器

停止容器的命令:

代码语言:javascript
复制
docker stop <container_name/id>
启动容器
代码语言:javascript
复制
docker start <container_name/id>
重启容器
代码语言:javascript
复制
docker restart <container_name/id>
删除容器

命令如下:

代码语言:javascript
复制
docker rm <container_id/name>

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

代码语言:javascript
复制
docker rm -f my_ubuntu
容器日志

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

代码语言:javascript
复制
docker logs <id/name>
暂停容器
代码语言:javascript
复制
docker pause <id/name>

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

恢复暂停的容器
代码语言:javascript
复制
docker unpause <id/name>

进入容器

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

docker attach命令

docker attach 命令使用如下:

代码语言:javascript
复制
docker attach <container_name/id>

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

代码语言:javascript
复制
docker attach my_ubuntu

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

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

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

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

docker exec 命令

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

代码语言:javascript
复制
docker exec -it <container_name/id> <exec>

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

代码语言:javascript
复制
docker exec -it my_ubuntu /bin/bash

执行结果:

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

查看容器变更

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

代码语言:javascript
复制
docker diff <name/id>

如,查看my_ubuntu的变更:

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

提交容器

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

代码语言:javascript
复制
docker commit <container_id/name> repo/name:tag

如,我把本地的my_ubuntu提交:

代码语言:javascript
复制
docker commit my_ubuntu test/ubuntu:personal

然后查看镜像:

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 原创声明
  • 创建容器
    • 新建容器
      • 新建并运行容器
      • 容器管理
        • 查看容器列表
          • 停止容器
            • 启动容器
              • 重启容器
                • 删除容器
                  • 容器日志
                    • 暂停容器
                      • 恢复暂停的容器
                      • 进入容器
                        • docker attach命令
                          • docker exec 命令
                          • 查看容器变更
                          • 提交容器
                          • 总结
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档