下面是从创建 Dockerfile 到在另一台服务器上启动容器的完整步骤: 1. 创建 Dockerfile 首先,在本地(原始服务器)创建一个名为 Dockerfile 的文件,内容如下: dockerfile Copy Edit FROM ubuntu:18.04
RUN apt update && apt install -y openssh-server net-tools
RUN mkdir /var/run/sshd
RUN echo 'root:password123' | chpasswd http://60.204.139.57:13000/xuxinyi/note.git
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22 80 443 3306 6379 5432
CMD ["/usr/sbin/sshd", "-D"]
构建 Docker 镜像 在 Dockerfile 文件所在的目录中运行以下命令,构建镜像: bash Copy Edit
docker build -t gogs .
这将创建一个名为 gogs 的镜像。
保存 Docker 镜像为 TAR 文件 将构建的 Docker 镜像保存为一个 .tar 文件,以便传输到另一个服务器: bash Copy Edit
docker save -o gogs.tar gogs
这会将 gogs 镜像保存为 gogs.tar 文件。
将 TAR 文件传输到另一个服务器 使用 scp 或其他传输工具,将 gogs.tar 文件传输到目标服务器。假设目标服务器的 IP 地址为 192.168.1.2,命令如下: bash Copy Edit
scp gogs.tar root@192.168.1.2:/root/123
在目标服务器上加载 Docker 镜像 登录到目标服务器并加载传输过来的 Docker 镜像: bash Copy Edit
docker load -i /root/123/gogs.tar
这将从 gogs.tar 文件中加载 Docker 镜像。
启动容器 使用以下命令启动容器,并映射必要的端口(例如 22 端口映射到 10022): bash Copy Edit
docker run -d -p 10022:22 -p 10080:80 -p 10443:443 -p 12206:3306 -p 15432:5432 --name gogs-container gogs
该命令将启动容器 gogs-container,并将容器内的端口映射到主机的端口。
验证容器是否启动 运行以下命令查看容器是否已启动: bash Copy Edit
docker ps
您应该能够看到容器正在运行并且端口已经映射。
访问容器 • 使用 SSH 连接到容器内,端口 10022 对应于容器的 22 端口: bash Copy Edit
ssh root@<目标服务器IP> -p 10022
使用设置的密码 password123 进行登录。
检查容器内的 SSH 服务 进入容器内并检查 SSH 服务是否运行正常: bash Copy Edit
docker exec -it gogs-container bash
ps aux | grep sshd
如果服务未启动,您可以手动启动: bash Copy Edit service ssh start
检查网络连接 验证容器内的网络配置是否正常: bash Copy Edit docker exec -it gogs-container netstat -tuln 这将列出所有正在监听的端口。 11. 查看容器日志 如果有问题,您可以查看容器日志,以便进一步排查问题: bash Copy Edit docker logs gogs-container 总结 1. 创建并构建 Docker 镜像,然后保存为 .tar 文件。 2. 将 .tar 文件传输到目标服务器。 3. 在目标服务器上加载并启动容器,通过端口映射使得服务可访问。 4. 登录容器并检查服务状态,确保 SSH 和其他服务正常运行。 通过这些步骤,您可以将 Docker 容器从一台服务器迁移到另一台服务器,并正常运行。