目 录CONTENT

文章目录

Docker基础命令

Sakura
2023-08-10 / 0 评论 / 0 点赞 / 73 阅读 / 8868 字 / 正在检测是否收录...

一: 快速入门: 使用 Docker 运行 Nginx

  1. 使用 docker run 运行 docker 容器

// 运行docker容器,如果本地没有容器镜像,会从仓库中下载 -d 表示在后台运行
docker run -d nginx:latest

  1. 查看运行的容器

docker ps 

  1. 使用 docker inspect 查看 docker 详细配置信息

容器 ID 只需要能唯一识别就可以 , 不需要全部输入

docker inspect 容器ID

"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "244fff3f1e0e386bb902d8eda33b525c4507b967d1c3ecaf3cfef9ae29ffeeeb",
                    "EndpointID": "69b37366173424849e189b45a258f98529cdf7f2df6c7f1666e950d3cc996862",
                    "Gateway": "172.17.0.1",  //网关
                    "IPAddress": "172.17.0.2", //容器地址
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
  1. 容器网络说明

  • IP地址 172.17.0.2 指向 docker0 172.17.0.1

  • Docker0 借助内核与主机相关联

# 使用 ip a s 查看网络接口情况
ip a s

......
# docker0网桥,用于为容器提供桥接,转发到主机之外的网络
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:d5:c3:d4:cc 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::42:d5ff:fec3:d4cc/64 scope link
       valid_lft forever preferred_lft forever


# 与容器中的虚拟网络设备在同一个命名空间中,用于把容器中的网络连接到主机,物理机中if8这个位置是双数,容器中if8是单数
9: veth393dece@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 02:e3:11:58:54:0f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::e3:11ff:fe58:540f/64 scope link
       valid_lft forever preferred_lft forever

  1. 使用 docker curl 访问

docker curl http://172.17.0.2

## 返回结果,表示访问成功
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

二: docker 命令

1. docker run 运行一个命令在容器中

注意:

  • 命令是主体 , 没有命令容器就会消亡

  • 容器是 dep 启动的

docker run -i -t --name c1 centos:latest bash

命令解释:

  1. docker run 运行一个命令在容器中,命令是主体,没有命令容器就会消亡

  2. -i 交互式

  3. -t 提供终端

  4. --name c1 把将运行的容器命名为c1

  5. centos:latest 使用centos最新版本容器镜像 bash 在容器中执行的命令

因为使用了-i-t的命令 , 所以直接进入容器了root@b42a41... 前面是容器中所对应的管理员 root , 后面的容器的ID , 所在目录为根目录

# 1. 查看主机名
hostname

b42a41c0b59d

# 2. 查看网络设备
ip a s

# 本地回环网卡
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
# 虚拟网络设备,与物理机相连
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

# 3.查看进程
ps aux

[root@b42a41c0b59d /]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  12036  2176 pts/0    Ss   08:43   0:00 bash
root         17  0.0  0.0  44652  1784 pts/0    R+   09:10   0:00 ps aux

# 查看用户
cat /etc/password

# 退出
exit
# 退出就相当于退出 bash 这个进程 , 就导致容器没有命令可用,容器就停止了

2. docker ps 查看容器的运行情况

# 查看运行中的
docker ps

# 查看所有容器
docker ps -a

3. docker inspect 容器的详细配置

# 1.首先进入容器
docker run -it --name c2 centos:latest bash

按住ctrl键,再按p键与q键,可以退出交互式的容器,容器会处于运行状态。

docker inspect c2

"IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "244fff3f1e0e386bb902d8eda33b525c4507b967d1c3ecaf3cfef9ae29ffeeeb",
                    "EndpointID": "bdb961e38b2fa258e5f66433989f59ff5ae5e4f473446ea47f6510d49016eb57",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

4. docker exec 容器外实现与容器交互执行命令

# 查看根目录
docker exec -it c2 ls 

# 查看网络接口
docker exec -it c2 ip a s
  • -it 交互式

  • c2 表示当前运行的 docker 名称

5. docker attach 进入运行中的容器

# 1. 查看运行中的容器
docker ps

# 2. docker attach进入容器
docker attach c2

注意: docker attach 命令进入容器后退出会使得容器停止运行 , 所以还是需要按 ctrl + p + q 使容器继续在后台运行

5. docker stop 对正在运行的容器进行关闭

# 1. 查看运行中的容器
docker ps

# 2. 停止容器/批量停止
docker stop 容器名/容器ID...

6. docker start 启动容器

# 1. 查看停止的容器
docker ps -a

# 2.启动容器/批量启动
docker start c1 c2

7. docker top 查看容器中运行的进程信息

docker top 容器名/容器ID

8. docker rm 删除指定容器

正在运行的容器需要先停止才能删除

# 1. 删除容器
docker rm 容器名/容器ID

# 2. 停止容器再删除容器
docker stop 容器名/容器ID ; docker rm 566

# 3.批量删除容器
docker ps --all | awk '{if (NR>=2){print $1}}' | xargs docker rm

1. 其他删除

# 1.删除未使用的容器镜像
docker image prune

# 2.删除所有未使用的容器镜像
docker image prune -a

# 3.删除所有停止运行的容器
docker container prune

# 4. 删除所有未被挂载的卷
docker volume prune

# 5.删除所有网络
docker network prune

# 6.删除docker所有资源
docker system prune

0

评论区