1、前言
前面我们已经讲过,如何下载镜像,如何创建容器。
不知道你们有没有这样的感受,每次拉去新的镜像。之前安装比如"vim、ll"等命令和资源都会消失,那么如何创建属于自己的镜像呢?
当我们已经有部署好的容器,把容器打包成镜像文件,然后安装到其他机器上,无需重新安装,一键启用,何乐而不为呢?
那么具体该怎么做呢?
2、导出容器
以JDK8容器为例,上篇文章我们已经新建了JDK8容器;
[root@1 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
842e12c3e67b jdk:1.8 "/bin/bash" 3 hours ago Up 3 hours NAMES
jdk-test
myjdk.tar.gz
# jdk
docker commit jdk-test myjdk
docker save -o myjdk.tar.gz myjdk
然后把机器1的tar包通过SSH传输到其他机器2执行:
[root@1 docker]# scp myjdk.tar.gz **.**.**.191:/docker/jdk
root@**.**.**.191's password:
myjdk.tar.gz
导入镜像
[root@2 docker]#docker load -i myjdk.tar.gz
查看镜像
[root@2 jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myjdk latest fef0ed645efb 17 minutes ago 628MB
创建容器
docker stop jdk-test
docker rm jdk-test
docker run -itd --name jdk-test myjdk
进入容器
docker exec -it jdk-test /bin/bash
验证
[root@2 /docker/jdk]# java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
3、上传 Docker Hub公共仓库
上述包传来传去,似乎不是很好,那么我们可以上传我们的私有仓库Docker Hub;
我们需要先注册一个账户
登录
[root@2 jdk]# docker login
登录成功后,查看镜像
[root@2 jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myjdk latest fef0ed645efb 25 minutes ago 628MB
推送镜像
用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。
以下命令中的 username 请替换为你的 Docker 账号用户名。
[root@2]# docker tag myjdk username/myjdk
[root@2]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myjdk latest fef0ed645efb 14 hours ago 628MB
username/myjdk latest fef0ed645efb 14 hours ago 628MB
[root@2]# docker push username/myjdk
使用镜像
[root@2]# docker pull username/myjdk