Docker 容器镜像及其使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文主要为大家讲解 Docker 容器镜像的基本概念及其使用时的常用命令。

47.jpeg
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

一、基本概念

1. Docker镜像(image)

    
Docker 镜像就是一个只读的模板。镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

2. Docker容器(container)

   
Docker 利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的,保证安全的平台。

3. Docker仓库(repository)

   
仓库是集中存放镜像文件的场所。有时候把仓库和仓库注册服务器( Registry )混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签 (tag) 。仓库分为公开仓库 (Public) 和私有仓库 (Private) 两种形式。最大的公开仓库是 Docker Hub ,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 Docker Pool 等,可以提供大陆用户更稳定快读的访问。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下载在另外一台机器上使用这个镜像时候,只需需要从仓库上 pull 下来就可以了。

二、Docker基本命令

  • Docker的安装
sudo apt install docker.io
  • Docker启动及状态查询
sudo service docker start
sudo service docker status
  • 查看Docker的版本
sudo docker version
  • 查看本地镜像
sudo docker images
  • 下载镜像文件
sudo docker pull ubuntu
  • 运行Ubuntu镜像
docker run -i -t ubuntu /bin/bash
  • 删除镜像文件
sudo docker rmi -f hello-world
  • 查看已经启动的Docker服务(容器)
sudo docker ps –a
  • 停止docker服务
sudo docker stop image-name
  • 登陆Docker
sudo docker login https://hub.docker.com/
  • 保存修改后的Docker容器
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
        -a :提交的镜像作者;
        -c :使用Dockerfile指令来创建镜像;
        -m :提交时的说明文字;
        -p :在commit时,将容器暂停
  • docker可以支持把一个宿主机上的目录挂载到镜像里
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash
  • Docker容器的删除
docker rm CONTAINER ID
  • Docker镜像的删除
docker rmi
  • Docker容器启动start/stop/restart
docker start/stop/restart
docker start命令使用-i选项来开启交互模式
  • 查询镜像和容器的详细信息
docker inspect
docker info
  • 连接正在运行的容器
docker attach CONTAINER ID/name
  • 退出容器不关闭
ctrl + d 退出关闭容器, ctrl + p + q 退出容器不关闭
  • Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令
解决:
apt-get update
apt install net-tools       # ifconfig 
apt install iputils-ping     # ping
  • docker Ubuntu安装mysql
apt-get update
apt-get install -y mysql-server mysql-client
  • Docker容器和主机文件拷贝
1)从容器内拷贝文件到主机上
    docker cp <containerId>:/file/path/within/container /host/path/target
2)从主机内拷贝文件到容器上
    sudo docker cp host_path containerID:container_path
3)问题 FATA[0000] Error: Path not specified
    Version 1.6.2 doesn't allow copying from host to container, you need to upgrade to at least 1.8 for that support
  • docker版本升级
1)Docker源安装指定版本:
    sudo apt-get install apt-transport-https
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys     36A1D7869245C8950F966E92D8576A8BA88D21E9
    sudo bash -c "echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list"
    sudo apt-get update  --更新软件源
    sudo apt-cache search docker  --查找需要更新的docker版本
    sudo apt-get install lxc-docker-1.9.1
2)错误的解决
    docker安装完成后执行sudo service docker start,提示错误:Failed to start docker.service: Unit docker.service is masked.
    解决方案:
    systemctl unmask docker.service
        systemctl unmask docker.socket
        systemctl start docker.service
  • docker 容器备份
1)生成docker镜像
   docker commit -p 30b8f18f20b4 container-backup
2)我们想要在Docker注册中心上传或备份镜像,我们只需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可
    (1)docker login
    (2)docker tag a25ddfec4d2a arunpyasi/container-backup:test
        (3)docker push arunpyasi/container-backup
3)如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。
          docker save -o ~/container-backup.tar container-backup
          tar -zcvf ubuntu2-backup.tar.gz container-backup.ta
  • docker 恢复容器
1)在我们成功备份了我们的Docker容器后,我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像,那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。
    docker pull arunpyasi/container-backup:test
2)如果我们将这些Docker镜像作为tar包文件备份到了本地,那么我们只要使用 docker load 命令,后面加上tar包的备份路径,就可以加载该Docker镜像了。
        tar -zxvf ubuntu2-backup.tar.gz 
    docker load -i ~/container-backup.tar
3)使用docker image查看
  • extc 命令

使用attach命令经常会卡段,可以使用exec命令替代

docker exec -it ubuntu /bin/bash

 上面用attach进入的用exit会退出容器必须用ctrl P Q退出才能继续后台运行,exec的 用exit也不会真正退出容器继续后台运行  用name或id都可以

  • 常用命令
docker run --name ubuntu -it ubuntu:16.04 /bin/bash
docker exec -it 96740370a5da /bin/bash

阿里巴巴开源镜像站 提供全面,高效和稳定的系统镜像、应用软件下载、域名解析和时间同步服务。”

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
7天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
3天前
|
关系型数据库 MySQL API
|
4天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
3天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
119 28
|
5天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
59 2
|
6天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
30 1
|
7天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
15 1
|
7天前
|
Docker 容器
docker 修改容器内的系统时间
【10月更文挑战第27天】docker 修改容器内的系统时间
126 2
|
8天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
14天前
|
Web App开发 iOS开发 Docker
Docker 容器的日志
【10月更文挑战第31天】
26 5

相关产品

  • 容器镜像服务