Docker容器部署全记录:nginx和MySQL实战,手把手教你配置静态IP
1. 禁用 firewalld 服务
在 Linux 系统中,firewalld 是默认的防火墙管理工具。在某些学习或测试环境中,可能需要临时禁用它以避免端口访问限制。
systemctl disable firewalld
该命令会禁用 firewalld 服务,使其在系统启动时不再自动运行。
2. SSH 远程登录
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务。它可以将 Windows 和 Linux 系统之间传输的数据进行加密,防止信息泄露。
3. 查看网络信息
使用 ip add 命令可以查看当前系统的网络接口配置信息。
[root@c-docker ~]# ip add
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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:bb:c5:0b brd ff:ff:ff:ff:ff:ff
altname enp3s0
altname enx000c29bbc50b
inet 192.168.10.232/24 brd 192.168.10.255 scope global dynamic noprefixroute ens160
valid_lft 1665sec preferred_lft 1665sec
inet6 fe80::20c:29ff:febb:c50b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 7e:4c:49:01:3e:d9 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
其中 state DOWN 表示该网络接口(如示例中的 docker0)没有激活或没有连接网线,网络不通。
4. nmcli 命令
nmcli 是 NetworkManager 的命令行工具,用于管理 Linux 网络连接(网卡、WiFi、VPN、网桥、路由、DNS 等),主流发行版(CentOS/RHEL、Ubuntu、Debian、Fedora)默认搭载。
服务器端 NetworkManager 服务路径:/usr/sbin/NetworkManager
4.1 查看网络设备
nmcli d
4.2 查看网络连接配置
nmcli c
关闭与激活指定网卡接口:
nmcli c down ens160 # 关闭 ens160 网卡接口
nmcli c up ens160 # 激活 ens160 网卡接口
4.3 查看当前网络是否启用
nmcli n
禁用与启用全部网络:
nmcli n off # 禁用全部网络
nmcli n on # 打开全部网络
5. 查找进程
在系统所有进程中查找名字里带 "networkmanager" 的进程:
[root@feng ~]# ps aux|grep -i networkmanager
root 774 0.0 0.5 259888 21832 ? Ssl 10:30 0:00 /usr/sbin/NetworkManager --no-daemon
root 1493 0.0 0.0 6640 2304 pts/0 S+ 10:36 0:00 grep --color=auto -i networkmanager
命令说明:
ps aux:查看系统所有正在运行的进程(a=所有用户,u=显示用户,x=包括没有终端的进程)grep:文本过滤工具-i:查找文本时不区分大小写
6. Socket 文件
Socket 文件是实现进程和进程之间通信的文件,可视为一种接口。
7. Docker 知识点
Docker 是一个容器软件,用来安装和运行应用程序。启动一个容器就是运行一个软件实例。
7.1 Docker 容器技术核心概念
- 镜像(Image):包含一个微型的操作系统 + 核心的应用程序 + 依赖的软件。
- 仓库(Repository):存放镜像的网站或服务。
- 容器(Container):运行镜像的地方。
7.2 基础 Docker 命令
查看运行中的容器:
[root@R-docker ~]# docker ps
failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory
查看 Docker 版本信息:
[root@R-docker ~]# docker version
Client: Docker Engine - Community
Version: 29.6.1
API version: 1.55
Go version: go1.26.4
Git commit: 8900f1d
Built: Fri Jun 26 11:44:00 2026
OS/Arch: linux/amd64
Context: default
failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory
查看 Docker 相关进程:
[root@R-docker ~]# ps aux|grep docker
root 2619 0.0 0.0 6392 2072 pts/1 S+ 11:40 0:00 grep --color=auto docker
列出本地已构建的所有 Docker 镜像:
[root@R-docker-2 ~]# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
nginx:latest 127262f8c4c7 270MB 71MB U
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:latest 127262f8c4c7 270MB 71MB U
其中 nginx:latest 表示软件名为 nginx,版本为 latest(最新版)。
7.3 运行 Docker 容器
docker run 命令会从指定的镜像创建一个新的容器,并启动它来运行一个进程。
示例:启动一个 nginx 容器,使用镜像版本为 nginx:1.30.3,宿主机监听 8081 端口,容器监听 80 端口,容器名为 sc-1,放到后台运行。
docker run -d --name sc-1 -p 8081:80 nginx:1.30.3
参数说明:
-d:daemon,作为守护进程在后台运行--name:指定容器的名字-p:publish port,指定发布的端口号(宿主机端口:容器端口)
docker run 命令相当于依次执行了以下三个步骤:
- 下载镜像:
docker pull - 创建容器:
docker create - 启动容器:
docker start
分步操作示例:
# 1. 下载镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.30.3
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.30.3 docker.io/nginx:1.30.3
2. 创建容器
docker create --name sc-1 -p 8081:80 nginx:1.30.3
3. 启动容器
docker start sc-1
8. DHCP 服务
DHCP(动态主机配置协议)是一种网络管理协议,用于自动分配 IP 地址和其他网络配置参数。Docker 内部有专门的 DHCP 服务器软件,可以给容器分配 IP 地址、配置网关、子网掩码和 DNS 服务器地址。
9. MySQL 数据库容器操作
9.1 下载 MySQL 镜像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.6
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.6 docker.io/mysql:8.4.6
查看镜像:
[root@R-docker run]# docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
mysql:8.4.6 7c6a49430969 1.07GB 237MB
nginx:1.30.3 b38976776413 236MB 64.1MB U
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.6 7c6a49430969 1.07GB 237MB
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.30.3 b38976776413 236MB 64.1MB U
9.2 启动 MySQL 容器
docker run -d --name sc-mysql-1 -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=sc123456" mysql:8.4.6
参数说明:
-e "MYSQL_ROOT_PASSWORD=sc123456":传递环境变量,设置 MySQL 里 root 用户的密码为 sc123456
容器管理命令:
docker stop sc-mysql-1 # 停止容器
docker rm sc-mysql-1 # 删除容器(remove)
docker top sc-mysql-1 # 查看容器里运行的进程
9.3 进入 MySQL 容器并操作数据库
[root@R-docker run]# docker exec -it sc-mysql-1 bash # 进入 sc-mysql-1 容器内部,执行 bash 解释器程序
bash-5.1# mysql -uroot -p'sc123456' # 使用 root 用户和密码登录 MySQL
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.4.6 MySQL Community Server - GPL
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; # 显示所有数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql> exit # 退出 MySQL
Bye
bash-5.1# cd /
bash-5.1# ls
afs boot docker-entrypoint-initdb.d home lib64 mnt proc run srv tmp var
bin dev etc lib media opt root sbin sys usr
bash-5.1# cat /etc/oracle-release # 查看容器里的 Oracle Linux 版本
Oracle Linux Server release 9.6
bash-5.1# exit # 退出容器
exit
命令说明:
docker exec -it sc-mysql-1 bash:-it开启一个终端,接受用户的输入,可以交互式输入内容;sc-mysql-1是容器名;bash是进入容器后运行的解释器程序。mysql -uroot -p'sc123456':-uroot指定用户名为 root;-p'sc123456'指定密码为 sc123456。mysql>:表示已成功进入 MySQL 数据库管理系统内部,可以执行 SQL 语句。
10. 配置静态 IP 地址
给服务器配置静态 IP 地址,避免每次重启后 IP 地址变化(DHCP 动态分配)。
10.1 进入网卡配置目录
[root@R-docker ~]# cd /etc/NetworkManager/system-connections/
[root@R-docker system-connections]# ls
ens160.nmconnection
10.2 查看路由表获取网关
[root@R-docker system-connections]# ip route
default via 192.168.88.2 dev ens160 proto dhcp src 192.168.88.128 metric 100 # 默认网关
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.10.0/24 dev ens160 proto kernel scope link src 192.168.10.128 metric 100
注意:配置静态 IP 时,IP 地址的第三段需要与当前网络环境一致(示例中为 88)。
10.3 修改 ens160 网卡配置文件
[root@R-docker system-connections]# vim ens160.nmconnection
配置文件内容示例:
[connection]
id=ens160
uuid=a7b074c2-4339-3fef-b0da-c86ffa99ffff
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1783345134
[ethernet]
[ipv4]
method=manual
address1=192.168.88.128/24,192.168.88.2
dns=114.114.114.114;192.168.10.2;
[ipv6]
addr-gen-mode=eui64
method=auto
[proxy]
10.4 重载网络并重启网卡
[root@R-docker system-connections]# nmcli c reload ens160 # 重新加载该连接的配置文件(不重启)
[root@R-docker system-connections]# nmcli c down ens160 && nmcli c up ens160 # 停用 + 激活该连接(重启)
10.5 验证静态 IP 配置
更多推荐

所有评论(0)