Docker 入门指南——常用命令

栏目: 编程工具 · 发布时间: 5年前

内容简介:前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令。镜像是一些打包好的已有的环境,可以被用来启动和创建容器容器是镜像的实例化

前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令。

基本概念

镜像 Image

镜像是一些打包好的已有的环境,可以被用来启动和创建容器

容器 Container

容器是镜像的实例化

容器的UUID

UUID – 通用唯一标识符(Universally Unique Identifier)

容器有三种方式来进行标识:

  • 长UUID
  • 短UUID
  • Name

UUID 是 Docker daemon 产生的,在一台主机上是唯一的,在创建容器的时候可以通过 --name 来指定容器的名字,如果不指定会自动分配一个字符串名称。

通过docker ps、docker inspect等命令可以查看到容器的标识信息

容器启动过程

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  2. 利用镜像创建并启动一个容器
  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  5. 从地址池配置一个 ip 地址给容器
  6. 执行用户指定的应用程序
  7. 执行完毕后容器被终止

image 操作

  • 查看 image 列表:

    docker iamges
    
  • 下载镜像:

    docker pull registry.domain.com/library/ubuntu:14.04
    

创建镜像

# 常用下面这种方式制作镜像,Dockerfile 文件更透明
docker build [-f DockerfileName] -t image_name DockerfilePath

这里 DockerfilePath 是 Context 上下文目录,在创建的时候会全部上传到 Docker Server 端,所以这个目录不要太大。

参数说明:

  • -f / --file :Name of the Dockerfile (Default is ‘PATH/Dockerfile’),Dockerfile的完整路径
    • -t / --tag :Name and optionally a tag in the ‘name:tag’ format,指定了镜像名称,镜像的名字及tag,通常name:tag或者name格式
    • --no-cache :Do not use cache when building the image, 这篇文章 介绍了使用这个参数的场景,构建镜像中有时候包含 git clone 命令,会默认使用缓存,新代码就不会下载了,所以,有时候需要加上这个参数;
  • --pull ,默认false。Always attempt to pull a newer version of the image,设置该选项,总是尝试pull镜像的最新版本

其他的 build 参数,可以采用 docker build -h 查看。

删除image

删除 image 之前,需要先删除 container :

docker ps -a
docker rm container_id

删除 image :

docker rmi  docker.io/tomcat:7.0.77-jre7   或者  docker rmi b39c68b7af30
docker rmi michael/ubuntu:14.04

删除虚悬镜像(dangling image):

$docker image ls -f dangling=true #列出虚悬镜像

$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

迁移镜像

  • 保存镜像到文件

    docker save image_name -o file.tar
    
  • 加载一个 tar 包的镜像

    docker load -i file.tar
    

Container 操作

  • 查看运行中的容器

    docker ps
    
  • 查看所有容器

    docker ps -a
    
  • 显示运行的容器里的进程信息

    docker top cid
    

此处, cid 表示你运行的容器名

  • 显示容器详细信息

    docker inspect cid
    
  • 日志查看

    docker logs cid
    # 实时查看日志输出
    docker logs -f cid
    
  • 查看容器root用户密码

    docker logs cid 2>&1 | grep '^User: ' | tail -n1
    

容器运行

docker run -it --name cidregistry.domain.com/library/ubuntu:14.04

如果直接 docker run -it registry.domain.com/library/ubuntu 是不行的,因为不加 tag ,默认就去运行 latest 版本,而本地没有 latest 版本,所以,需要将 image + tag ,以冒号分隔拉去。

-i
-t
--name
-d
--rm
-p
-v
--privileged=false

当处于一个容器中时,利用 exit 退出容器

  • 启动已终止(stop)容器:

    docker restart 3e8 # 3e8 为容器的 id 号,不需要全写,也可以用容器名替代
    
  • 附着到正在运行的容器中,退出时会导致容器终止

    docker attach cid
    
  • 进入正在运行的容器

    docker exec -it cid /bin/bash
    
  • 在容器中运行一段程序

    docker run ubuntu apt-get update
    
  • 拷贝文件出来

    docker cp cid:/container_path to_path
    
  • 删除容器

    docker rm cid
    
    # 强制删除
    docker rm -f cid
    
    # 删除所有容器
    # -q 表示只列出容器的 id 值
    docker rm `docker ps -a -q`
    
  • 状态修改

    docker start/stop/kill/restart cid
    
  • 更改容器名字

    docker rename old new
    

修改容器,制作镜像

image 相当于类,container 相当于实例,不过可以动态给实例安装新软件,然后把这个 container 用 commit 命令固化成一个 image:

docker commit -m "修改yum源" -a "michaelxiang" cid registry.domain.com/ci/centos-os:latest

推送镜像

docker login registry.domain.com -u username -p password
docker push registry.domain.com/michael/IMAGE[:TAG]

如果支持 accesstoken 权限认证:

docker login registry.domain.com -u test -p ACCESSTOKEN:XXXXXXXXXXXXX:ACCESSTOKEN

其他

你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间:

docker system df

docker 配置

daemon.json 文件

{
    "insecure-registries": ["registry.xxx.com"],
    "registry-mirrors": ["https://xxxx.mirror.swr.myhuaweicloud.com"],
    "exec-opts": ["native.cgroupdriver=systemd"],
    "storage-driver": "overlay2",
    "storage-opts": [
                "overlay2.override_kernel_check=true"
    ]
}

FAQ

Q1:Docker 空间问题

Docker长时间运行后的volumes目录清理

参考

命令:

镜像登录:


以上所述就是小编给大家介绍的《Docker 入门指南——常用命令》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构、算法与应用(原书第2版)

数据结构、算法与应用(原书第2版)

Sartaj Sahni / 王立柱、刘志红 / 机械工业出版社 / 2015-4 / 79.00元

《数据结构、算法与应用——C++语言描述》是享有盛誉的数据结构教科书的第2版。它完整地包含了基本数据结构的内容,是CS2课程的理想用书。作者Sartaj Sahni通过循循善诱的讲解、直观具体的讨论和基于现实的应用,让读者轻松、愉快地学习。新版书着重利用标准模板库(STL),把书中开发的数据结构和算法与相应的STL实现方法相互关联。本书还增加了很多新的实例和练习题。 书中的应用实例是它的特色......一起来看看 《数据结构、算法与应用(原书第2版)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具