拉取本地的 Docker 镜像的三种方法
方法 1:通过 docker save
和 docker load
导出和导入镜像
-
在本地服务器上导出镜像: 使用
docker save
将镜像保存为一个.tar
文件:docker save -o mysql-5.7.tar mysql:5.7
-
将镜像文件传输到其他服务器: 你可以通过
scp
或其他文件传输工具,将.tar
文件传输到目标服务器。例如,使用scp
:scp mysql-5.7.tar root@目标机器IP:
/root
-
在目标服务器上导入镜像: 在目标服务器上,使用
docker load
命令导入该镜像:docker load -i
/root/
mysql-5.7.tar
这样,目标服务器就能够使用你传输过来的本地镜像了。
在成功加载镜像之后,你可以使用 docker run 命令启动容器。你可以根据你的需要配置容器参数,例如端口映射、环境变量等。
以启动 mysql:5.7 为例,可以按以下方式操作:
启动 MySQL 容器
运行 MySQL 容器:
启动一个容器并将其映射到宿主机的端口:
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7
这里的参数解释:
--name mysql-container:指定容器的名称为 mysql-container。
-e MYSQL_ROOT_PASSWORD=root:设置 MySQL 容器的 root 用户密码为 root(可以根据需要修改密码)。
-d:让容器在后台运行。
-p 3306:3306:将容器的 3306 端口映射到宿主机的 3306 端口(使你可以通过宿主机访问 MySQL)。
mysql:5.7:使用的镜像。
检查容器是否启动:
启动后,你可以使用 docker ps 命令查看容器是否在运行:
docker ps
进入容器:
如果你需要进入容器的命令行,可以使用 docker exec 命令:
docker exec -it mysql-container bash
这将允许你在容器内部执行命令。
连接到 MySQL 数据库:
在容器内,你可以通过以下命令连接到 MySQL 数据库:
mysql -u root -p
然后输入密码(你之前在 -e MYSQL_ROOT_PASSWORD 中设置的密码)。
方法 2:通过私有 Docker Registry 共享镜像
-
搭建私有 Docker Registry: 你可以在本地搭建一个私有 Docker Registry 服务器,其他服务器可以从这个 Registry 拉取镜像。
- 启动 Docker Registry:
docker run -d -p 5000:5000 --name registry registry
- 启动 Docker Registry:
-
将镜像推送到私有 Registry: 你需要将本地镜像标记为私有 Registry 的地址并推送到 Registry。假设你的 Registry 在
localhost:5000
,可以按以下步骤操作:-
标记镜像:
docker tag mysql:5.7
localhost
:5000/mysql:5.7
-
推送镜像:
docker push
localhost
:5000/mysql:5.7
-
-
在其他服务器上拉取镜像: 在目标服务器上,你需要首先确保能够访问你的 Registry(例如通过 IP 地址或 DNS)。然后,可以通过以下命令拉取镜像:
docker pull
localhost
:5000/mysql:5.7
方法 3:通过 Docker Hub 公共或私有仓库
如果你希望更广泛地共享镜像,你可以将镜像推送到 Docker Hub(官方 Docker 镜像仓库)或者其他公共/私有的 Docker 镜像仓库。
-
注册 Docker Hub 账户: 如果你没有 Docker Hub 账户,需要注册一个 Docker Hub 账户.
-
登录 Docker Hub:
docker login
-
将镜像推送到 Docker Hub: 标记镜像并推送到 Docker Hub(例如,如果你的用户名是
yourusername
):docker tag mysql:5.7
yourusername
/mysql:5.7 docker push
yourusername
/mysql:5.7
-
在其他服务器上拉取镜像: 其他服务器只需执行以下命令即可拉取该镜像:
docker pull
yourusername
/mysql:5.7
总结
- 方法 1(
docker save
和docker load
)适用于较小范围的分享,适合离线传输。 - 方法 2(搭建私有 Registry)适合公司内部共享镜像。
- 方法 3(Docker Hub)适合更广泛的共享,尤其是需要跨多个网络的情况。