docker.md 3.3 KB

下面是从创建 Dockerfile 到在另一台服务器上启动容器的完整步骤: 1. 创建 Dockerfile 首先,在本地(原始服务器)创建一个名为 Dockerfile 的文件,内容如下: dockerfile Copy Edit FROM ubuntu:18.04

更新包并安装必要工具

RUN apt update && apt install -y openssh-server net-tools

创建 SSH 服务工作目录

RUN mkdir /var/run/sshd

设置 root 密码

RUN echo 'root:password123' | chpasswd http://60.204.139.57:13000/xuxinyi/note.git

允许 root 用户通过 SSH 登录

RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

开放常见端口

EXPOSE 22 80 443 3306 6379 5432

启动 SSH 服务

CMD ["/usr/sbin/sshd", "-D"]

  1. 构建 Docker 镜像 在 Dockerfile 文件所在的目录中运行以下命令,构建镜像: bash Copy Edit

    docker build -t gogs .
    

    这将创建一个名为 gogs 的镜像。

  2. 保存 Docker 镜像为 TAR 文件 将构建的 Docker 镜像保存为一个 .tar 文件,以便传输到另一个服务器: bash Copy Edit
    docker save -o gogs.tar gogs

这会将 gogs 镜像保存为 gogs.tar 文件。

  1. 将 TAR 文件传输到另一个服务器 使用 scp 或其他传输工具,将 gogs.tar 文件传输到目标服务器。假设目标服务器的 IP 地址为 192.168.1.2,命令如下: bash Copy Edit
    scp gogs.tar root@192.168.1.2:/root/123

  2. 在目标服务器上加载 Docker 镜像 登录到目标服务器并加载传输过来的 Docker 镜像: bash Copy Edit
    docker load -i /root/123/gogs.tar 这将从 gogs.tar 文件中加载 Docker 镜像。

  3. 启动容器 使用以下命令启动容器,并映射必要的端口(例如 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,并将容器内的端口映射到主机的端口。

  4. 验证容器是否启动 运行以下命令查看容器是否已启动: bash Copy Edit
    docker ps 您应该能够看到容器正在运行并且端口已经映射。

  5. 访问容器 • 使用 SSH 连接到容器内,端口 10022 对应于容器的 22 端口: bash Copy Edit
    ssh root@<目标服务器IP> -p 10022 使用设置的密码 password123 进行登录。

  6. 检查容器内的 SSH 服务 进入容器内并检查 SSH 服务是否运行正常: bash Copy Edit
    docker exec -it gogs-container bash ps aux | grep sshd 如果服务未启动,您可以手动启动: bash Copy Edit service ssh start

  7. 检查网络连接 验证容器内的网络配置是否正常: 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 容器从一台服务器迁移到另一台服务器,并正常运行。