在 centos 服务器上运行 docker 容器
在本地打包好镜像后,并且导出 docker 容器。
在 centos 上安装 Docker
首先更新您的系统软件包并安装所需的依赖项
1 | sudo yum update |
将 Docker 稳定存储库添加到系统
1 | sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
使用yum,安装最新版本的 Docker CE
1 | sudo yum install docker-ce |
安装 Docker 软件包后,启动 Docker 守护程序并使其在启动时自动启动
1 | // 开启 dokcer |
验证 Docker 服务正在运行
1 | sudo systemctl status docker |
查看 docker 版本
1 | docker -v |
导出镜像并上传到 centos 服务器
docker 导入导出 tar 包
docker export/import
1 | // 查看镜像 |
docker save/load
1 | // 查看镜像 |
上传到服务器
1 | scp -P 22 -r <容器>.tar 用户名@ip:/root/../usr/local/文件夹名 |
docker 运行容器
在 centos 环境下 import 镜像时,docker run 导入的镜像必须带 command
1 | // import 镜像run |
查看运行的容器
1 | docker ps -a |
docker 容器运行成功后,查看容器 IP:docker inspect <容器id> |grep IPAddress
1 | // 查看容器网络是否联通 |
以上都没问题,则表示容器部署成功
docker 的网络模式
Bridge 模式 –net=bridge(默认)
在 centos 服务器安装 docker 环境后,会在宿主机安装一个虚拟网桥 docker0。可以使用宿主机在 docker0 上的 IP 地址来代替 localhost
通过 ip addr 命令可以看到虚拟网桥 docker0
1 | // 查看宿主机网络 |
基于对 net namespace 的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间。
容器通过DHCP获取一个与 docker0 同网段的 IP 地址,并默认连接到 docker0 网桥,以此实现容器与宿主机的网络互通
Host 模式 –net=host
直接使用容器宿主机的网络命名空间。
将不拥有自己独立的Network Namespace,即没有独立的网络环境。它使用宿主机的ip和端口。
Container 模式 –net=container:指定容器名
与 host 模式类似,只是容器将与指定的容器共享网络命名空间
None模式 –net=none
为容器创建独立网络命名空间,但不为它做任何网络配置,容器中只有 lo,用户可以在此基础上,对容器网络做任意定制。
centos 上防火墙基本使用
1 | // 查看所有打开的端口 |
docker 启动后映射的端口无法被访问问题
查看防火墙是否有映射端口号
1 | firewall-cmd --zone=public --list-ports |
添加策略对外打开指定的端口
1 | firewall-cmd --zone=public --add-port=[端口号]/tcp --permanent |
查看 ip 转发有没有打开
net.ipv4.ip_forward = 1 表示打开,为 0 则表示没打开
1 | sysctl net.ipv4.ip_forward |
关闭 ipv6 监听
1 | // 查看服务器端口监听 |
参考
如何在 CentOS 7上安装和使用 Docker
利用 docker 将 web 项目部署到服务器
Linux 中 centos7 防火墙基本上使用
docker 网络模式
Docker 网络模式详解及容器间网络通信
Docker 镜像 import 与 save 的区别
centos 上禁用 ipv6 监听
Docker 镜像 import 与 save 的区别2