【Docker】常用命令

发布时间:2023年12月19日

🛫 导读

需求

别的不说,先上个图,方便以后查看,真的很好用。
在这里插入图片描述

开发环境

版本号描述
文章日期2023-12-15
操作系统Win10 - 22H222621.2715
WSL2

1?? 常见名词的解析

  1. 镜像(Image):Docker 镜像是一个静态的文件,它包含了应用程序和所有的依赖项,类似于虚拟机中的镜像文件。

  2. 容器(Container):Docker 容器是由 Docker 镜像创建的运行实例。容器是一个隔离的环境,它只包含应用程序和其所需的依赖项。

  3. 仓库(Registry):Docker 仓库是存储 Docker 镜像的地方,类似于代码仓库。Docker Hub 是最大的公共 Docker 仓库,可以免费使用。

  4. Dockerfile:Dockerfile 是一个文本文件,它包含了构建 Docker 镜像的指令,类似于编写代码时的 Makefile。

  5. Compose:Compose 是一个工具,它允许定义和运行多个 Docker 容器的应用程序。

  6. Swarm:Swarm 是 Docker 的原生集群管理工具,它允许将多个 Docker 主机组成一个集群,以便更好地管理 Docker 容器。

  7. Volume:Volume 是 Docker 中用于持久化数据的机制,它可以将容器内的数据保存到宿主机的目录中,以便容器重启后能够恢复数据。

  8. Network:Network 是 Docker 中用于管理容器间通信的机制,它允许容器之间相互通信,或者与外部网络连接。

h3

2?? 状态及帮助命令

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

3?? 镜像命令

查看

使用docker images --help 查看images参数命令
常见参数

  • -a:列出本地所有镜像
  • -q:只列出镜像ID
  • –digests:显示镜像的摘要信息
  • –no trunc:显示完整的镜像信息
  • -s:列出收藏数不小于指定值的镜像
[root@localhost etc]# docker images
# 镜像的仓库源   标签			镜像ID		镜像创建时间	镜像大小
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB

搜索

–filter用于各种过滤条件

C:\Users\Knine>docker search tomcat --filter=STARS=3000
NAME      DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
tomcat    Apache Tomcat is an open source implementati…   3616      [OK]

下载

docker pull 镜像名[:tag],如果不写tag,默认是latest

[root@localhost ~]# docker pull mysql		//等价于docker pull mysql.io/library/mysql:latest
#下载mysql指定的版本
[root@localhost ~]# docker pull mysql:5.7		//5.7版本在docker官网中必须有。

删除

docker rmi 镜像ID

[root@localhost ~]# docker rmi 镜像ID 镜像ID 镜像ID
#删除所有镜像
[root@localhost ~]# docker rmi -f $(docker images -qa)

4?? 容器命令

有了镜像才可以创建容器

run

该命令包含下载和启动两部分。

[root@localhost ~]# docker run [可选参数] image

#参数说明
--name="Name"	//Name是容器名字,如tomcat01,tomcat02
-d			   //后台方式运行
-it			   //使用交互式运行,进入容器查看内容
-p			  //指定容器端口	-p 8080:8080
	-p	ip:主机端口:容器端口
	-p	主机端口:容器端口
	-p	容器端口
-p			//随机指定端口

启动和停止

  • 从容器中退回主机使用exit
  • 退出容器不停止,ctrl+p+q
[root@localhost ~]# docker start/restart/stop/kill 容器Id

查看

docker ps


#列出当前正在运行的容器
C:\Users\Knine>docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
1aa797f5936b   centos    "/bin/bash"   28 seconds ago   Up 26 seconds             reverent_saha

#列出当前正在运行的容器+带出历史运行过的容器
C:\Users\Knine>docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                    PORTS     NAMES
1aa797f5936b   centos        "/bin/bash"   32 seconds ago   Up 31 seconds                       reverent_saha
f8d2fef7a3f3   hello-world   "/hello"      21 hours ago     Exited (0) 21 hours ago             elated_gould
da2e218ca65b   hello-world   "/hello"      25 hours ago     Exited (0) 25 hours ago             upbeat_lederberg

# 只显示容器ID
C:\Users\Knine>docker ps -q
1aa797f5936b

#列出当前正在运行的容器+带出历史运行过的容器(只显示容器ID)
C:\Users\Knine>docker ps -q -a
1aa797f5936b
f8d2fef7a3f3
da2e218ca65b

删除

# 删除指定容器,不能删除运行中的容器,可强制删除 -f
docker rm 容器ID
# 删除所有容器
docker rm -f $(docker ps -qa)

5?? 其他常用命令

后台启动容器 run --detach

–detach 后台运行容器,并打印容器ID

C:\Users\Knine>docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Create and run a new container from an image

Aliases:
  docker container run, docker run

Options:
  -d, --detach                         Run container in background and
                                       print container ID

示例:

[root@localhost /]# docker run -d centos
6f114cdff4d934d0a2f005baeaeb86f2285573263094ac3f392f26348c761376
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 问题后台启动centos,docker ps 发现centos 停止了

docker容器使用后台运行,必须有一个前台的进程,docker发现没有前台应用,就会自动停止
如:nginx,启动后发现自己没有提供服务,就会立即停止,就没有程序了

查看日志

docker logs -tf --tail number 容器id

#自己编写一段脚本,并后台运行
[root@localhost /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"
85d460f6ad9657b8df88dcb1a25b4707c7b5d932bebd761af799cc619098700b
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND               CREATED         STATUS       PORTS     NAMES
85d460f6ad96   centos  "/bin/sh -c 'while t…"   5 seconds ago   Up 
																4 seconds             																	    exciting_beaver
-tf		#显示日志
--tail number	#要显示日志条数
[root@localhost /]# docker logs -tf --tail 10 85d460f6ad96 

查看容器中的进程信息

# 语法:docker top 容器id
[root@localhost /]# docker top 85d460f6ad96
UID        PID        PPID       C         STIME      TTY             TIME            CMD
root        110110      110090      0      15:23       ?             00:00:00            /bin/sh -c while true;do echo kuangshen;sleep 1;done
root       128910       110110      0       15:37       ?             00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看元数据

docker inspect 容器ID/镜像ID 等 #返回有关 Docker 对象的低级信息

C:\Users\Knine>docker ps -q
1aa797f5936b

C:\Users\Knine>docker  inspect 1aa797f5936b
[
    {
        "Id": "1aa797f5936b97bbbb411f48e65d93cf3574ed423496c9dcecaddbebf43adedd",
        "Created": "2023-12-15T12:40:13.613829523Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,

进入运行的容器

  • docker exec #进入容器后开启一个新的终端,可以执行里面的操作
  • docker attach #进入容器正在执行的终端,不会启动新的进程
# 方式一 
# 命令
docker exec -it 容器id bashshell
# 测试
docker exec -it 85d460f6ad96  /bin/bash

# 方式二
docker attach 容器id

文件拷贝

双向的,既可以从容器拷贝到主机,也可以从主机拷贝到容器。

C:\Users\Knine>docker cp --help

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

Aliases:
  docker container cp, docker cp

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH
  -q, --quiet         Suppress progress output during copy. Progress
                      output is automatically suppressed if no terminal
                      is attached

📖 参考资料

文章来源:https://blog.csdn.net/kinghzking/article/details/135024182
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。