专栏首页编程坑太多「走进k8s」Docker 基本命令(二)

「走进k8s」Docker 基本命令(二)

上次说了简单的介绍了docker,基本的概念和架构,并实际操作了如何安装docker。这次就说说Docker 镜像和容器的基本操作命令。

(一)镜像

了解git的老铁都知道有github,其实docker也有个官方的镜像仓库叫dockerhub。https://hub.docker.com/

  • ①获取镜像

docker pull [选项] [Docker Registry 地址[:端口]/]仓库名[:标签] Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号],默认地址是 Docker Hub。在library的镜像也就是官方镜像需要:名称 如果是个人的镜像需要:用户名/软件名

docker pull redis:4.0
  • ②镜像列表

仓库名称,标签,镜像 ID、创建时间,镜像大小。镜像ID是唯一标识。

docker image ls

官网redis大小:40MB,但是下载到本地后是102MB。压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的,因此 Docker Hub 所显示的大小是网络传输中更关心的流量大小。

  • ③镜像层次

我们可以使用history命令来看看,可以发现redis包含很多个镜像层。Docker的镜像的基础是联合文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,外界看到的是最外层的镜像。(比如外界只看到Tomcat镜像,而中间叠加了很多层镜像)

#刚才那个镜像ID
docker image 67f7ad418fdf
  • ④删除镜像

删除本地的镜像

docker image rm  镜像名:版本号
docker rmi  镜像ID
  • ⑤镜像迁移

场景:之前博客是通过容器的方式来进行的后来从华为云迁移到了阿里云,需要将容器打包成镜像,然后在将镜像打包成文件。将文件拷贝到另一台阿里云的机器上。 打包

docker save 镜像名称 | gzip > alpine-latest.tar.gz

到阿里云机器后将打包文件转换成镜像

docker load -i alpine-latest.tar.gz

(二)容器

  • ①创建容器

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。centos:7:这是指用 ubuntu:16.04 镜像为基础来启动容器。/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash name:容器指定一个名称 p :端口映射(-p 80:80)80端口映射到外部的80端口上,前一个是映射,后一个容器内的端口 [root@5cd9daf8961b /] 开启的容器终端,exit退出后状态就变成status (Exited 状态) --restart=always 无论容器退出代码是什么,docker 都会自动重启容器。限制重启次数:--restart=on-failure:5 ,当容器退出代码不为0时,最多重启5次。这个很有用,我自己的博客服务器经常流量大了就挂了,有了这个命令挂了一会就自动重启了,不用半夜在给我发邮件了。这只是在我的场景下比较合适的方式。在实际生产中还是使用容器编排工具比较好。

docker run -it centos:7 /bin/bash
exit

启动一个后台运行的,如果不加入后台运行的,容器退出后,容器就关闭了 加入-d 后台运行,status (up 状态)

docker run -it -d centos:7 /bin/bash
  • ②容器列表

如果不加-all,显示正常运行的容器,如果加-all显示所有的容器

docker container ls -all
  • ③进入容器

存在可能修改容器内部的参数的情况,所以需要进入容器。exec -it 开启交互进入容器中。

docker exec -it 容器ID /bin/bash
  • ④终止和启动容器

在实际应用中有这种场景:更换springboot的容器的jar包,需要终止容器。更换完成后需要重新启动容器。

docker container stop 容器名称/容器ID
docker container start 容器名称/容器ID
  • ⑤容器日志

查看容器日志

docker log -f 容器名称/容器ID
  • ⑥删除容器

删除容器的操作

docker container rm  容器ID

批量删除容器,慎用

docker rm -f $(docker ps -qa)
  • ⑦容器改变

容器内发生的改变

docker diff  容器ID
  • ⑧容器变成镜像

就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。 --author:指定修改的作者 --message:记录本次修改的内容 docker commit 命令除了学习之外,还有一些特殊的应用场合,比如被入侵后保存现场等。但是,不要使用 docker commit 定制镜像,定制镜像应该使用Dockerfile来完成。不规范的镜像不是docker推荐的。

docker commit --author 'www.idig8.com' --message '修改打包成镜像' 镜像ID 名称:版本号

(三)总体信息查看

多少个镜像,多少个容器,多少个外部,建立了多少个缓存

docker system df

PS:基本容器和镜像的常用命令都给老铁们说了,如果你会git或者linux命令比较熟悉docker并不复杂,原理还是很重要的。

本文分享自微信公众号 - 编程坑太多(idig88),作者:诸葛阿明

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「docker实战篇」python的docker-docker镜像的创建使用docker commit命令(32)

    PS:到此第一次完成了镜像的定制。使用的命令就是docker commit,手动操作给旧的镜像添加了一个新的层形成了一个新的镜像,大家对镜像多层分组应该有了感觉...

    IT故事会
  • 「docker实战篇」python的docker-docker系统管理-基本命令(29)

    PS:docker的基本命令很重要,但是如果会使用help这个功能官方介绍的更清楚,我这里也是把英文做了翻译。主要还是理解原理。

    IT故事会
  • 跟我一起学docker(三)--镜像的常用操作

    IT故事会
  • Docker常用命令

    YINUXY
  • 【Linux】使用docker搭建Apache/Nginx服务器

    Docker的容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

    一名白帽的成长史
  • 「docker实战篇」python的docker-docker镜像的创建使用docker commit命令(32)

    PS:到此第一次完成了镜像的定制。使用的命令就是docker commit,手动操作给旧的镜像添加了一个新的层形成了一个新的镜像,大家对镜像多层分组应该有了感觉...

    IT故事会
  • Docker入门-常用命令

    Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。

    小码农薛尧
  • Docker常用命令超细介绍

      工欲善其事必先利其器,本文我们首先来给大家介绍下docker中的常用命令,只用对这些常用命令非常熟悉我们才能更好的来使用docker。

    用户4919348
  • 【技术分享】docker基础

    我们在写代码的过程中,或多或少都会遇到这样的问题:写了代码,在别人电脑上运行不了,一检查,别人电脑缺环境。

    木又AI帮
  • 二、docker 镜像容器常用操作(让我们用docker 溜得飞起)

    上篇讲了我们如何安装docker,现在该我们一展拳脚的时候了。接下来让我们一起学习一下docker常见的操作,让我们能够会使用 docker。

    程序员爱酸奶

扫码关注云+社区

领取腾讯云代金券