Docker学习笔记 - 常用命令

目录

  1. 基本概念
  2. 常用命令
  3. 使用docker compose启动脚本
  4. 创建自己的image

Docker命令文档

1. 下载一个image

从hub.docker.com下载一个image。

bash 复制代码
docker pull [image name]

下载时指定image的tag。

bash 复制代码
docker pull [image name]:<tag>

举例,下载postgre的tag为alpine3.19的image

bash 复制代码
docker pull postgre:alpine3.19

2. 载入一个Image

启动一个新的container并载入指定的image。

bash 复制代码
docker run -d [image name]
2.1 映射端口

启动redis镜像,把实际服务器上的port 6000绑定到docker container 的 6379 port。

bash 复制代码
docker run -p 5432:5432-d postgre
2.2 指定redis的镜像tag

下面命令指定运行tag为alpine3.19,tag可以简单的理解为类似版本号的东西。

bash 复制代码
docker run -p 5432:5432 -d postgre:alpine3.19
2.3 指定volume来达到数据的持续性

即container被停止时,里面被修改过的数据不会丢失。

bash 复制代码
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data

指定volume的三种方式:

  • Host Volume :指定在host上的存储位置和在image里的目录的对应关系,称为主机卷
    -v [path in host]:[path in image]
  • Anonymous Volume :指定在image里需要被映射的目录,但不指定在host上的存储位置,使用docker的默认设置,称为匿名卷
    -v [path in image]
  • Name Volume :指定在image里需要被映射的目录,使用docker的默认存储位置, 但给该存储的数据命名,称为命名卷,推荐使用。
    -v [volume name]:[path in image]
2.4 使用环境变量
bash 复制代码
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin

使用-e来指定环境变量的值,每个环境变量都要用-e来标识。每个image的环境变量定义都不同,因此需要到hub.docker.com上查询该image的文档。

2.5 指定使用的虚拟网络名字

如下命令,将启动的image连接到虚拟网络postgre-network。

bash 复制代码
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin
--net postgre-network 
2.6 指定container名字
bash 复制代码
docker run -p 6000:6379 -d postgre:alpine3.19 \
-v postgre_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=password
-e POSTGRES_USER=admin
--net postgre-network 
--name postgre_db 

3. 重启一个container

重启一个docker container.

bash 复制代码
docker start [container name]

举例,启动名为my_container的容器。

bash 复制代码
docker start my_container

4. 暂停一个container

暂停一个docker container.

bash 复制代码
docker stop [container name]

举例,停止名为my_container的容器。

bash 复制代码
docker stop my_container

5. 列出现有container

以下命令效果都一样

bash 复制代码
docker ps
docker container ls
docker container ps

默认情况下,该命令只列出目前运行中的container,要列出停止的container,可以使用以下参数。

bash 复制代码
docker ps -a

如果要显示出container的大小,可以使用以下参数。

bash 复制代码
docker ps -s

6. 在运行中的Container中执行命令行

bash 复制代码
docker exec [container name]

举例,查看在叫mycontainer的容器中,工作目录下的文件

bash 复制代码
docker exec mycontainer ls

在叫mycontainer的容器中,在/tmp目录下生产一个名为execWorks的文件。

bash 复制代码
docker exec -d mycontainer touch /tmp/execWorks

7. 实时显示Container的资源使用情况

bash 复制代码
docker stats

这个命令默认只显示当前运行中的container的资源使用情况,要查看所有container的情况,可以使用以下参数

bash 复制代码
docker stats -a

8. 移除指定Container

bash 复制代码
docker rm [container name]

在移除container之前,首先要停止container的运行。如果要移除运行中的container,请使用以下参数。

bash 复制代码
docker rm -f mycontainer.

移除container同时,也要移除相关联的volumes,使用以下参数。

bash 复制代码
docker rm -v mycontainer

要释放所有的已停止的container,可以使用以下命令:

bash 复制代码
 docker container prune

9. 查看现存的image, image的属性

bash 复制代码
docker images

执行这条命令后,系统就会列出所有现存的images,如下图。

由上图可见,每个image有repository, tag, image id三个属性。repository 属性在图形界面里又被称为name。

这里,要讲一下image的 image id和name/repository的区别。
image name/repository 是你在创建image是给他起的名字。不同的image是允许使用同样的image name的。比如,你可以重复生成叫做MyImage的image, 但是只有最后生成的那个才会获得latest的tag。你也可以通过给他们打上不同的tag以示区别。

image id 是你在创建image时系统自动为它生成的id,每个image id都是独一无二的,标识唯一的一个image。

9. 移除image

移除image时可以使用image id也可以使用image name。

bash 复制代码
docker image rm [image name] or [image id]
docker rmi [image name] or [image id]

举例,移除名字叫myimage的最新生成的image。

bash 复制代码
docker rmi myimage:latest

要注意的是,一个image可以被tag两个不同的name,着这种情况下,需要解除image和name和tag的绑定,才可以移除image。

举例,Image ID为5164fcc90073的image同时被tag了两个不同的名字,image1:latest和image2:latest, 当我们执行以下命令,仅解除了这个image和image1:latest.

bash 复制代码
docker rmi image1:latest

此时,这个image仅于image2:latest绑定,执行以下命令,会解绑该image和image2:latest并删除这个image。

bash 复制代码
docker rmi image2:latest

持续更新中

相关推荐
Java陈序员19 小时前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子2 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽3 天前
win10下运行Start Broker and Proxy报错解决
docker
齐生13 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记
舒一笑4 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData4 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256604 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
用户962377954484 天前
VulnHub DC-1 靶机渗透测试笔记
笔记·测试