嘿,各位码农朋友们!还在为Docker的各种命令头疼吗?这篇文章我们用最接地气的方式,把Docker最常用的那些操作给整理出来了。无论你是Docker新手还是想要复习一下基础知识,这份指南都能帮你快速上手,少走弯路。就像是给你一份Docker外卖配送指南,从取餐(搜索镜像)到送达(运行容器),包教包会!
1.搜索镜像a
docker search httpd
命令格式:
docker pull 仓库名称[标签]
下载镜像httpd
docker pull httpd
实例:
[root@localhost ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
e4fff0779e6d: Already exists
1d0292c3dcd2: Already exists
4f4fb700ef54: Already exists
1316399d8fbf: Already exists
b4cc6570db82: Already exists
fd1a778092db: Already exists
Digest: sha256:3f71777bcfac3df3aff5888a2d78c4104501516300b2e7ecb91ce8de2e3debc7
Status: Downloaded newer image for httpd:latest
3.查看已下载镜像
命令格式
docker images 仓库名称:[标签]
实例:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest a49fd2c04c02 4 weeks ago 148MB
nginx latest 900dca2a61f5 7 weeks ago 188MB
单独查看某个镜像
docker images httpd:latest
REPOSITORY TAG CREATED SIZE
httpd latest a49fd2c04c02 4 weeks ago 148MB
docker inspect a49fd2c04c02(IMAGE ID号)
镜像的详细信息中包括创建时间、系统版本、主机名、域名、用户、卷、标签、操作系统,设备 ID等各种信息。
可以用 dockertag 命令来为本地的镜像添加新的标签
语法格式
docker tag httpd:旧标签 httpd:新标签
实例:
[root@localhost ~]# docker tag httpd:latest httpd:mytag
[root@localhost ~]# docker images httpd:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest a49fd2c04c02 4 weeks ago 148MB
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest a49fd2c04c02 4 weeks ago 148MB
httpd mytag a49fd2c04c02 4 weeks ago 148MB
nginx latest 900dca2a61f5 7 weeks ago 188MB
httpd:latest 是原始标签。
httpd:mytag 是你新添加的标签。
这两个标签都指向同一个镜像 ID,因此它们共享相同的内容和大小。
你可以使用这两个标签来运行相同的镜像。
docker run httpd:latest
docker run httpd:mytag
使用docker rmi命令删除镜像
你可以使用镜像的 ID 来删除镜像。例如:
docker rmi a49fd2c04c02
需要注意的是:
如果镜像被多个标签引用
强制删除镜像
如果你确定要删除该镜像,可以使用 -f选项强制删除:
docker rmi -f a49fd2c04c02
也可以删除标签,然后在通过镜像ID删除
你也可以使用镜像的名称和标签来删除镜像。例如:
docker rmi httpd:latest
docker rmi httpd:mytag
当一个镜像有多个标签的时候,docker rmi 命令只是删除该镜像多个标签中的指定标签,不会影响镜像文件,相当于只是删除了镜像的一个标签而已。
!!! 如果镜像正在被容器使用,你可能需要先停止并删除相关的容器,才能成功删除镜像。
docker ps -a
语法格式
docker save -o <保存的文件名>.tar <镜像名>:<标签>
实例如下:
存出镜像/dmk
使用 docker save 命令将镜像保存为一个 tar 文件
[root@localhost ~]# docker save -o httpd.tar httpd:mytag
[root@localhost ~]# ll
总用量 148616
-rw-------. 1 root root 152180736 8月 15 14:56 httpd.tar
//这条命令会将 httpd:latest 镜像保存为名为 myimage.tar 的文件。
语法格式:
使用 docker load 命令从 tar 文件中加载镜像:
docker load -i <文件名>.tar
实例:
首先需要删除镜像,然后进行恢复
例如,从 httpd.tar 文件中导入镜像,可以使用
docker load -i httpd.tar
查看是否成功
docker images
总结
导出镜像:
docker save -o <文件名>.tar <镜像名>:<标签>
导入镜像:
docker load -i <文件名>.tar
[root@localhost ~]# docker create -it --name web01 -p 80:80 httpd:latest /bin/bash
a68edea9638730c70363e7a32d9b3a3b21e7938d39343abdd5a2d9a9babd8c39
参数解释docker create: 创建一个新容器,但不启动它。-it: 以交互模式运行容器,并分配一个伪终端。--name web01: 为容器指定名称为 web01。-p 80:80: 将主机的 80 端口映射到容器的 80 端口。httpd:latest: 使用 httpd 镜像的最新版本。/bin/bash: 指定容器启动时执行的命令。
[root@localhost ~]# docker start web01 /或者ID
web01
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a68edea96387 httpd:latest "/bin/bash" 3 minutes ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp web0
关闭容器
docker stop web01 /或者ID
docker run -d --name nginx-do -p 80:80 nginx
-d:在后台运行容器(分离模式)。--name nginx-do:为容器指定一个名称(可选)。-p 80:80:将主机的 80 端口映射到容器的 80 端口。
要进入正在运行的容器,您可以使用 docker exec 命令。
基本语法如下:
docker exec -it <容器名称或ID> /bin/bash
实例
假设您有一个名为 nginx 的容器,可以通过以下命令进入
docker exec -it nginx-do /bin/bash
root@2ee5e3023732:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
要导出一个容器的文件系统,可以使用 docker export 命令。此命令将容器的文件系统导出为一个 tar 文件。
示例
假设您要导出名为 nginx-do的容器
[root@localhost ~]# docker export nginx-do > nginx-do.tar
[root@localhost ~]# ls
httpd.tar nginx-do.tar
这将创建一个名为 nginx-do.tar 的文件,包含容器的文件系统。
要从一个 tar 文件导入容器,可以使用 docker import 命令。此命令将 tar 文件导入为一个新的镜像。
示例
假设您要从 nginx-do.tar 文件导入一个新的镜像:
cat nginx-do.tar | docker import - nginx:latest
这将创建一个名为 nginx:latest的新镜像。
在 Docker 中,删除容器可以通过 docker rm 命令进行。
首先,您可以查看当前所有容器(包括运行中的和已停止的):
docker ps -a
要删除一个已停止的容器,可以使用以下命令:
docker rm <容器名称或ID>
示例如果您要删除名为 nginx-do 的容器:
docker rm nginx-do
如果您需要删除一个正在运行的容器,可以使用 -f(或 --force)选项强制删除:
docker rm -f <容器名称或ID>
示例强制删除正在运行的 nginx-do 容器:
docker rm -f nginx-do
docker rm <容器1> <容器2> ...
示例
docker rm nginx-do nginx-other
docker container prune
到这里,相信你已经掌握了Docker的基本操作套路。回顾一下,我们学会了:
记住,Docker就像是一个高科技的集装箱系统,镜像是你的货物模板,容器则是实际运输的集装箱。掌握了这些基础操作,你就能在容器化的海洋中自由航行了!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。