[Docker] 的常用命令

本文涉及的产品
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: [Docker] 的常用命令

ps 以下命令均为基于linux

1. 帮助命令

docker version      # 显示docker的版本信息
docker info       # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help    #帮助命令 

sudo su root      # 切换root用户
service docker start  # 启动docker

2. 镜像命令

获取镜像

docker images     # 获取本地的镜像


Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]


List images


Options:

-a, --all Show all images (default hides intermediate images)

–digests Show digests

-f, --filter filter Filter output based on conditions provided

–format string Pretty-print images using a Go template

–no-trunc Don’t truncate output

-q, --quiet Only show image IDs

搜索镜像

docker search 镜像名字    # 搜索镜像

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search --help


Usage: docker search [OPTIONS] TERM


Search the Docker Hub for images


Options:

-f, --filter filter Filter output based on conditions provided

–format string Pretty-print search using a Go template

–limit int Max number of search results (default 25)

–no-trunc Don’t truncate output

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARTS=5000

Error response from daemon: Invalid filter ‘starts’


// 搜索过滤


root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker search mysql --filter=STARS=5000

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

mysql MySQL is a widely used, open-source relation… 10637 [OK]

拉取镜像

docker pull 镜像名       # 拉取镜像
docker pull 镜像名:版本号     # 指定版本下载


root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker pull mysql


Using default tag: latest // 如果不写Tag,,默认下载lastest

latest: Pulling from library/mysql // 分层下载, docker images 的核心 联合文件系统

6f28985ad184: Pull complete

e7cd18945cf6: Pull complete

ee91068b9313: Pull complete

b4efa1a4f93b: Pull complete

f220edfa5893: Pull complete

74a27d3460f8: Pull complete

2e11e23b7542: Pull complete

fbce32c99761: Pull complete

08545fb3966f: Pull complete

5b9c076841dc: Pull complete

ef8b369352ae: Pull complete

ebd210f0917d: Pull complete


Digest: sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491 // 签名


Status: Downloaded newer image for mysql:latest

docker.io/library/mysql:latest // 真实地址

删除镜像

docker rmi        # 删除镜像
docker rmi -f 镜像id    # 删除特定的镜像

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi --help


Usage: docker rmi [OPTIONS] IMAGE [IMAGE…]


Remove one or more images


Options:

-f, --force Force removal of the image

–no-prune Do not delete untagged parents

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
mysql         5.7       2fb283157d3c   2 days ago    449MB
mysql         latest    26d0ac143221   2 days ago    546MB
hello-world   latest    d1165f221234   2 weeks ago   13.3kB

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker rmi -f  26d0ac143221
Untagged: mysql:latest
Untagged: mysql@sha256:5d1d733f32c28d47061e9d5c2b1fb49b4628c4432901632a70019ec950eda491
Deleted: sha256:26d0ac143221341c36402a139826e938d2ea6f2e458005a71699975c84e96ade
Deleted: sha256:16f5b1eb2e7319e8a0db5df7f1ee0903033400a42264fcfbcc2d946b12267895
Deleted: sha256:303119686434550f3672a755dcda8a0468d34472d77e8789ffef5dc5f73dc790
Deleted: sha256:88f159cadb30aacd4df26c9fb6e1fb71b3cc3f5ce05468659879216e7751bad7
Deleted: sha256:55b6e8ee7cbea49773b2a88c3941ebad16537df99b087e673ca4b0175ade1b70
Deleted: sha256:e27b1c89d3f9e194c1a3495c24a9546135ee3ab6625e94eaaedd09a41343e7d0

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
mysql         5.7       2fb283157d3c   2 days ago    449MB
hello-world   latest    d1165f221234   2 weeks ago   13.3kB

构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

runoob@runoob:~$ cat Dockerfile 

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

runoob@runoob:~$ docker build -t runoob/centos:6.7 .

Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......

参数说明:

  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec

runoob@runoob:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
runoob/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB

我们可以使用新的镜像来创建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id runoob
uid=500(runoob) gid=500(runoob) groups=500(runoob)

从上面看到新镜像已经包含我们创建的用户 runoob。

设置镜像标签

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

runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev

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

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

runoob@runoob:~$ 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

3. 容器命令

说明: 有了镜像才可以创建容器, linux, 下载一个centos镜像来测试学习

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name"   # 命名容器名字
-d        # 后台方式运行
-i        # 使用交互方式操作,
-t        # 运行终端
-p        # 指定容器端口  -p 8080:8080
  -p ip:主机端口:容器端口
  -p 主机端口:容器端口 (常用)
  
-p        # 随机端口

# 启动并进入容器

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker run -it centos /bin/bash

# 容器启动成功 注意[]
[root@44ff7f7ed7fe /]#

从容器中退回主机

exit      # 直接退出容器并停止
Ctrl + p + q  # 退出容器但不停止

列出运行中的容器

docker ps

oot@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker ps --help


Usage: docker ps [OPTIONS]


List containers


Options:

-a, --all Show all containers (default shows just running)


-f, --filter filter Filter output based on conditions provided


--format string Pretty-print containers using a Go template


-n, --last int Show n last created containers (includes all states)


(显示最近创建的运行中的程序)


(default -1)

-l, --latest Show the latest created container (includes all states)

–no-trunc Don’t truncate output


-q, --quiet Only display container IDs


(只显示运行中容器的id)


-s, --size Display total file sizes

删除容器

docker rm 容器id          # 不能删除运行中的容器
docker rm -f $(docker ps -aq) # 删除所有的容器

启动和停止容器的操作

docker start 容器id           # 启动已停止的容器
docker restart 容器id     # 重启停止的容器
 
docker stop  容器id       # 停止容器
docker kill  容器id     # 
  • 停止所有正在运行容器
docker kill $(docker ps -a -q)

4.常用的其他命令

  • 后台启动容器
docker run -d 镜像
  • 查看日志
docker logs 容器id
  • 查看容器的进程信息
docker ps
  • 查看容器的内容信息
docker inspect 容器id
  • 进入正在运行的容器

容器通常是以后台的方式运行的,需要进入容器修改一些配置

docker exec -it 容器id bashShell      # 进入容器后新开一个终端, 可以在里面操作

root@DESKTOP-GC42A9O:/mnt/c/Users/dcs# docker exec -it 60c79e9079ae /bin/bash


[root@60c79e9079ae /]# ls

bin etc lib lost+found mnt proc run srv tmp var

dev home lib64 media opt root sbin sys usr

docker attach 容器id        # 进入容器正在执行的终端,不会启动新的终端
  • 从容器内拷贝文件到主机
docker cp 容器id:容器内地址 目的主机地址

# 拷贝是一个手动的过程,未来我们可以使用 -v卷的技术,来实现同步
  • 卷操作
root@DESKTOP-GC42A9O:/home# docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
7月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
826 124
|
10月前
|
Docker 容器
熟悉Docker容器管理命令:start、stop与restart详细使用指南
掌握这些Docker容器管理命令对于维护应用程序的正常运行至关重要。在实际操作中,应注意容器配置、关联资源以及日志等信息,确保各项操作都能够顺畅并且安全地执行。
2978 0
|
10月前
|
安全 Unix Linux
Docker中授权普通用户使用docker命令以及解决无权限访问/var/run/docker.sock错误。
通过上述步骤,可以有效解决普通用户无法使用Docker命令的问题,同时处理 `/var/run/docker.sock`权限错误。这样的设置不仅方便用户使用Docker提供的各项服务,同时还能保护系统的安全性。在进行此类配置更改时,请确保理解每一步骤的作用及潜在的安全风险,尤其是在修改文件权限时。在实际的操作中,始终应该努力保持系统的最低必要权限,避免过度放宽权限,这是保障系统安全的一个重要方针。
3418 75
|
11月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p <宿主机端口>:<容器端口>`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
1320 57
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
2152 30
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
758 4
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
355 16
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
242 22
|
关系型数据库 MySQL Docker
|
NoSQL 应用服务中间件 Redis
Docker 常用命令整理
Docker 常用命令整理
388 1