docker 镜像和容器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: docker 镜像查找镜像 search我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。搜索镜像

docker 镜像


查找镜像 search


我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:


https://hub.docker.com/


我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。


搜索镜像


docker search httpd


表头释义:


  • NAME: 镜像仓库源的名称


  • DESCRIPTION: 镜像的描述


  • OFFICIAL: 是否 docker 官方发布


  • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。


  • AUTOMATED: 自动构建。


获取镜像 pull


当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。如果不指定标签版本,就会用默认的标签latest去下载最新版本的 Redis 镜像。


docker pull ubuntu


或者


docker pull ubuntu:lastest


列出已有镜像 image ls


我们可以使用 docker images ls 来列出本地主机上的镜像。


C:\Users\hp>docker image ls
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
hello-world         latest    feb5d9fea6a5   4 months ago   13.3kB
garland/butterfly   3.2.3     7709f74c4d5d   3 years ago    471MB


其中,REPOSITORY 和 TAG 字段分别表示镜像的名字和标签,IMAGE ID 表示镜像的ID,CREATED 和 SIZE 分别表示该镜像的创建时间和大小。一般来说,可以通过 REPOSITORY:TAG 或 IMAGE ID 唯一标识某个镜像。


删除镜像 rmi


该命令能删除本地镜像,具体语法是 docker rmi 镜像名:标签,或者 docker rmi 镜像 ID


  • -f :强制删除;


  • --no-prune :不移除该镜像的过程镜像,默认移除;


举例:


docker rmi ubuntu:latest



docker rmi1d622ef86b13


删除全部容器


docker rm $(docker ps -aq)


创建自己的镜像 commit


当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。


1、从已经创建的容器中更新镜像,并且提交这个镜像


2、使用 Dockerfile 指令来创建一个新的镜像


docker commit \
-m="has update" \
-a="runoob" e218edb10161 runoob/ubuntu:v2


各个参数说明:


  • -m: 提交的描述信息


  • -a: 指定镜像作者


  • e218edb10161:容器 ID


runoob/ubuntu:v2: 指定要创建的目标镜像名


我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:


设置镜像标签


我们可以使用 docker tag 命令,为镜像添加一个新的标签。


docker tag 860c279d2fec runoob/centos:dev


docker tag 镜像ID,这里是 860c279d2fec ,用户名称/镜像源名(repository name)和新的标签名(tag)。


使用 docker images 命令可以看到,ID为 860c279d2fec 的镜像多一个标签。


docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runoob/centos       6.7                 860c279d2fec        5 hours ago         190.6 MB
runoob/centos       dev                 860c279d2fec        5 hours ago         190.6 MB
runoob/ubuntu       v2                  70bf1840fd7c        22 hours ago        158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago          188 MB


Docker 容器




docker run -d \
-P training/webapp python app.py


我们也可以使用 -p 标识来指定容器端口绑定到主机端口。


两种方式的区别是:


-P :是容器内部端口随机映射到主机的高端口。


-p : 是容器内部端口绑定到指定的主机端口。


另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。


docker run -d \
-p 127.0.0.1:5001:5000 \
training/webapp python app.py



这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。


上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。


$ docker run -d \
-p 127.0.0.1:5000:5000/udp \
training/webapp python app.py



docker port 命令可以让我们快捷地查看端口的绑定情况。


docker port adoring_stonebraker 5000
127.0.0.1:5001



能看到当前所有的容器


docker ps



进入容器的配置文件夹

cd /var/lib/docker/containers/


docker 容器互联



端口映射并不是唯一把 docker 连接到另一个容器的方法。


docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。


docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。


新建网络


下面先创建一个新的 Docker 网络。


$ docker network create -d bridge test-net


参数说明:


-d:参数指定 Docker 网络类型,有 bridge、overlay。


其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。


连接容器


运行一个容器并连接到新建的 test-net 网络:


$ docker run -itd --name test1 --network test-net ubuntu /bin/bash


停止容器


docker stop 容器name/id



配置 DNS


我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:


{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}


设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。配置完,需要重启 docker 才能生效。


查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:


docker run -it --rm ubuntu cat etc/resolv.conf


参考


https://www.runoob.com/docker/docker-image-usage.html



目录
相关文章
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
223 93
|
1天前
|
消息中间件 Kafka 流计算
docker环境安装kafka/Flink/clickhouse镜像
通过上述步骤和示例,您可以系统地了解如何使用Docker Compose安装和配置Kafka、Flink和ClickHouse,并进行基本的验证操作。希望这些内容对您的学习和工作有所帮助。
41 28
|
1月前
|
Ubuntu NoSQL 开发工具
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
《docker基础篇:4.Docker镜像》包括是什么、分层的镜像、UnionFS(联合文件系统)、docker镜像的加载原理、为什么docker镜像要采用这种分层结构呢、docker镜像commit
207 70
|
4天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
36 23
|
4天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
89 15
|
14天前
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
90 26
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
85 27
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
156 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
74 22
|
1月前
|
Ubuntu NoSQL 关系型数据库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
《docker基础篇:6.本地镜像发布到私有库》包括本地镜像发布到私有库流程、docker regisry是什么、将本地镜像推送到私有库
126 29