云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Docker常用命令

jxf315 2025-05-21 14:35:47 教程文章 7 ℃

目录

  1. Docker信息相关命令
  2. Docker镜像相关命令
  3. Docker容器相关命令
  4. Docker网络相关命令

1. Docker信息相关命令

docker version #查看Docker版本
docker info #查看Docker信息
docker --help #查看Docker帮助信息

2. Docker镜像相关命令

docker images #查看Docker镜像
# 格式:docker images [选项] [仓库名:标签]
# 选项:
    # -a:列出所有镜像(默认只列出本地镜像)
    # -q:只显示镜像ID
    # --digests:显示镜像的摘要信息

docker search ubuntu #搜索Docker镜像
docker pull ubuntu #下载Docker镜像
docker rmi ubuntu #删除Docker镜像
docker rmi -f ubuntu #强制删除Docker镜像
docker rmi -f $(docker images -qa) #删除所有Docker镜像

3. Docker容器相关命令

docker run ubuntu #运行Docker镜像
# 格式:docker run [选项] 镜像名 [命令]
# 选项:
    # --name="name":为容器指定一个名称
    # -i:以交互模式运行容器
    # -t:为容器重新分配一个伪输入终端通常与-i一起使用
    # -v:挂载一个或多个本地主机的目录到容器里面卷
    # -d:后台运行容器
    # -p:端口映射,格式为:主机端口:容器端口
    # -e:设置环境变量,格式为:key=value
docker run -it ubuntu /bin/bash #运行Docker镜像并进入容器
docker run -d ubuntu #后台运行Docker镜像
docker run -d -p 80:80 ubuntu #后台运行Docker镜像并映射80端口
docker run -d -p 80:80 -v /home:/home ubuntu #后台运行Docker镜像并映射80端口并挂载/home目录
docker run -d -p 80:80 -v /home:/home -v /etc:/etc ubuntu #后台运行Docker镜像并映射80端口并挂载/home目录和/etc目录
docker run -d -p 80:80 -v /home:/home -v /etc:/etc -e key=value ubuntu #后台运行Docker镜像并映射80端口并挂载/home目录和/etc目录并设置环境变量
docker ps #查看正在运行的容器
docker ps -a #查看所有容器
docker ps -q #查看所有容器ID
docker ps -l #查看最后一个运行的容器
docker ps -n 10 #查看最近10个运行的容器
docker ps -f name=name #查看指定名称的容器
docker ps -f status=running #查看正在运行的容器
docker ps -f status=exited #查看已退出的容器
docker ps -f status=created #查看已创建的容器
docker ps -f status=paused #查看已暂停的容器
docker ps -f status=restarting #查看重启中的容器
docker ps -f status=removing #查看正在移除的容器
docker ps -f status=dead #查看已死亡的容器
docker ps -f status=stopped #查看已停止的容器
docker start container_id #启动容器
docker start container_name #启动容器
docker start -a container_id #启动容器并附加到标准输出
docker start -a container_name #启动容器并附加到标准输出
docker restart container_id #重启容器
docker restart container_name #重启容器
docker stop container_id #停止容器
docker stop container_name #停止容器
docker kill container_id #强制停止容器
docker kill container_name #强制停止容器
docker rm container_id #删除容器
docker logs container_id #查看容器日志
docker logs -f container_id #查看容器日志并跟随
docker logs -t container_id #查看容器日志并显示时间戳
docker logs -t --tail=10 container_id #查看容器日志并显示时间戳并显示最后10行
docker logs -t --tail=10 --since=1h container_id #查看容器日志并显示时间戳并显示最后10行并显示1小时内的日志
docker top container_id #查看容器进程
docker top container_name #查看容器进程
docker stats container_id #查看容器资源使用情况
docker stats container_name #查看容器资源使用情况
docker inspect container_id #查看容器详细信息
docker inspect container_name #查看容器详细信息
docker exec container_id command #在容器中执行命令
docker exec -it container_id command #在容器中执行命令并进入容器
docker exec -it container_name command #在容器中执行命令并进入容器
docker attach container_id #进入容器
docker attach container_name #进入容器
docker cp container_id:path host_path #从容器中复制文件到主机
docker cp host_path container_id:path #从主机复制文件到容器
docker cp container_id:path host_path #从容器中复制文件到主机
docker cp host_path container_id:path #从主机复制文件到容器

4. Docker网络相关命令

docker network ls #查看网络
docker network create network_name #创建网络
docker network connect network_name container_id #连接网络
docker network connect network_name container_name #连接网络
docker network disconnect network_name container_id #断开网络
docker network disconnect network_name container_name #断开网络
docker network rm network_name #删除网络
docker network inspect network_name #查看网络详细信息
docker network prune #删除所有未使用的网络

网络模式

配置

说明

bridge

--net=bridge

默认值,在Docker网桥docker0上为容器创建新的网络栈

none

--net=none

不配置网络,用户可以稍后进入容器,自行配置

container

--net=container:name/id

容器和另外一个容器共享Network namespace。kubernetes中的pod就是多个容器共享一个Networknamespace。

host

--net=host

容器和宿主机共享Network namespace

用户自定义

--net=自定义网络

用户自己使用network相关命令定义网络,创建容器的时候可以指定为自己定义的网络

# 默认模式
docker run -d -P --name tomcat01 --net bridge tomcat

# 以下是测试输出
docker@docker:~/docker_data/ubuntu$ docker run -d -P --name tomcat01 --net bridge tomcat
e881248a2c5b7a2063031dbf3a96b39ecdb26bbdbd68fad5aa81859d7abedad1
docker@docker:~/docker_data/ubuntu$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
5c56917064b3   bridge    bridge    local
4a3c3a15cb39   host      host      local
140de5d9d283   none      null      local
docker@docker:~/docker_data/ubuntu$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:8c:01:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.205/24 brd 192.168.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe8c:138/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 92:98:9b:bb:de:19 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::9098:9bff:febb:de19/64 scope link 
       valid_lft forever preferred_lft forever
41: veth96ba41f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 4e:a1:f9:88:4d:34 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::4ca1:f9ff:fe88:4d34/64 scope link 
       valid_lft forever preferred_lft forever
# 自定义模式
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 testnet01

# 以下是测试输出
docker@docker:~/docker_data/ubuntu$ docker network create --driver bridge --subnet 192.168.
0.0/16 --gateway 192.168.0.1 testnet01
c97896ea815faa6b906ce03d02a0cdad58197a2507e91687ce6fbf749baaecd4
docker@docker:~/docker_data/ubuntu$ docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
5c56917064b3   bridge      bridge    local
4a3c3a15cb39   host        host      local
140de5d9d283   none        null      local
c97896ea815f   testnet01   bridge    local
docker@docker:~/docker_data/ubuntu$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:8c:01:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.205/24 brd 192.168.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe8c:138/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 92:98:9b:bb:de:19 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::9098:9bff:febb:de19/64 scope link 
       valid_lft forever preferred_lft forever
41: veth96ba41f@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 4e:a1:f9:88:4d:34 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::4ca1:f9ff:fe88:4d34/64 scope link 
       valid_lft forever preferred_lft forever
42: br-c97896ea815f: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 16:53:e8:84:80:cb brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/16 brd 192.168.255.255 scope global br-c97896ea815f
       valid_lft forever preferred_lft forever

# 自定义网络详情
docker@docker:~/docker_data/ubuntu$ docker inspect testnet01
[
    {
        "Name": "testnet01",
        "Id": "c97896ea815faa6b906ce03d02a0cdad58197a2507e91687ce6fbf749baaecd4",
        "Created": "2025-05-08T06:06:24.182700925Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv4": true,
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
# 启动容器并连接到自定义网络
docker run -d -P --name tomcat-net-01 --net testnet01 tomcat
docker run -d -P --name tomcat-net-02 --net testnet01 tomcat

# 以下是测试输出
docker@docker:~/docker_data/ubuntu$ docker run -d -P --name tomcat-net-01 --net testnet01 tomcat
e54830dbf22d81765816555b7e69b83924cef696419f7b39901170b2e34d5bf6
docker@docker:~/docker_data/ubuntu$ docker run -d -P --name tomcat-net-02 --net testnet01 tomcat
01f6fe2b400ec22f134538104598c2833a38c5d220b131ce777070c063a3c58b
docker@docker:~/docker_data/ubuntu$ docker inspect testnet01
[
    {
        "Name": "testnet01",
        "Id": "c97896ea815faa6b906ce03d02a0cdad58197a2507e91687ce6fbf749baaecd4",
        "Created": "2025-05-08T06:06:24.182700925Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv4": true,
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "01f6fe2b400ec22f134538104598c2833a38c5d220b131ce777070c063a3c58b": {
                "Name": "tomcat-net-02",
                "EndpointID": "c3c7c7c074f6fd9f369ff4de550be62a6981a6c3ec6a03b03cc75fc5f196eb62",
                "MacAddress": "7e:84:83:30:e9:f0",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "e54830dbf22d81765816555b7e69b83924cef696419f7b39901170b2e34d5bf6": {
                "Name": "tomcat-net-01",
                "EndpointID": "66dc3a97580290e89e94b4b755578a41ed9a6b829a35f676c773ed0ccbfb7b9f",
                "MacAddress": "d6:68:a0:00:5f:a7",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
# connet 命令测试
docker network connect testnet01 tomcat01 
docker network inspect testnet01 

# 测试输出
docker@docker:~/docker_data/ubuntu$ docker network connect testnet01 tomcat01 
docker@docker:~/docker_data/ubuntu$ docker network inspect testnet01 
[
    {
        "Name": "testnet01",
        "Id": "c97896ea815faa6b906ce03d02a0cdad58197a2507e91687ce6fbf749baaecd4",
        "Created": "2025-05-08T06:06:24.182700925Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv4": true,
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "01f6fe2b400ec22f134538104598c2833a38c5d220b131ce777070c063a3c58b": {
                "Name": "tomcat-net-02",
                "EndpointID": "c3c7c7c074f6fd9f369ff4de550be62a6981a6c3ec6a03b03cc75fc5f196eb62",
                "MacAddress": "7e:84:83:30:e9:f0",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "e54830dbf22d81765816555b7e69b83924cef696419f7b39901170b2e34d5bf6": {
                "Name": "tomcat-net-01",
                "EndpointID": "66dc3a97580290e89e94b4b755578a41ed9a6b829a35f676c773ed0ccbfb7b9f",
                "MacAddress": "d6:68:a0:00:5f:a7",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            },
            "e881248a2c5b7a2063031dbf3a96b39ecdb26bbdbd68fad5aa81859d7abedad1": {
                "Name": "tomcat01", # 容器连接到自定义网络后,其信息出现在Containers中
                "EndpointID": "07583dd493c49873277610fca1265814fa6df60550006d23e7e5c1a509bd5413",
                "MacAddress": "66:6a:78:87:0a:49",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
最近发表
标签列表