Docker 入门指南——常用命令

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

内容简介:前面已经介绍了 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 入门指南——常用命令》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

The Algorithmic Beauty of Plants

The Algorithmic Beauty of Plants

Przemyslaw Prusinkiewicz、Aristid Lindenmayer / Springer / 1996-4-18 / USD 99.00

Now available in an affordable softcover edition, this classic in Springer's acclaimed Virtual Laboratory series is the first comprehensive account of the computer simulation of plant development. 150......一起来看看 《The Algorithmic Beauty of Plants》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具