前面
通过前面的学习操作镜像与启动一个docker容器,运行中的容器我们会进行各种运行环境的配置,可以将这个运行的容器进行导出,就好像我们将本地代码的分支推送到远程版本控制仓库一样。我们亦可创建将运行的容器对象打包成镜像推送到远程仓库中。
重要概念
在docker中仓库就是存放镜像的地方,而仓库也像github或gitee一样也分公共仓库和私有仓库。最开始我们下载docker的时候会指定一个注册服务器Registry,详情可以参考 Docker入门之HelloWorld(一)
刚刚在学习的时候可能会把镜像仓库与注册服务器混淆。实际上注册服务器是存放仓库的具体服务器,一个注册服务器可以拥有多个仓库,而每一个仓库下又可以有多个镜像。三者的关系可以用下图进行表示:
Docker Hub
正如git版本控制器一样,它拥有全世界最大的版本控制工具
github
。在docker中也存在最大的镜像仓库Docker Hub。
注册Docker Hub账户
访问 Docker Hub以注册账户,注册流程非常简单这里就不多进行介绍。
登陆后界面是如下模样的:
Linux服务器登陆Docker Hub
可以通过命令行的方式执行 docker login
输入用户名与密码,登陆成功后会默认保存我们的认证信息,首先查看命令的使用帮助:
[root@VM-0-10-centos ~]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
docker login – username 用户名 服务器地址(可以不填模式就是Docker Hub地址)
## 登陆
docker login -u galengao
上传镜像到Docker Hub
需求: 定制自己的tomcat镜像并上传到dockerhub上。
- 下载tomcat镜像
[root@VM-0-10-centos ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
5e0b432e8ba9: Pull complete
a84cfd68b5ce: Pull complete
e8b8f2315954: Pull complete
0598fa43a7e7: Pull complete
e0d35e3be804: Pull complete
8fc448a0c88b: Pull complete
dbdff6e5955b: Pull complete
5daf3771e3d8: Pull complete
e4265b3badfc: Pull complete
126f233cb97a: Pull complete
Digest: sha256:c13b2ca96ea98f9e5790e62ba81af996304f84cea3fd9020e6c6f63885684976
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
- 运行tomcat
[root@VM-0-10-centos ~]# docker run -d -p 8080:8080 --name my-tomcat tomcat
b9dec6aec9dc282125ccb50ea96be0aa9fb7a4c2187546e2f095b0ee2f2323ed
启动tomcat成功后访问页面发现并没有熟悉的小猫图标
登录tomcat容器查看容器文件目录如下:
## 进入tomcat容器
[root@VM-0-10-centos ~]# docker exec -it my-tomcat /bin/bash
## 查看容器列表
root@b9dec6aec9dc:/usr/local/tomcat# ls -lsa
total 176
8 drwxr-xr-x 1 root root 4096 Dec 8 20:53 .
8 drwxr-xr-x 1 root root 4096 Dec 3 14:11 ..
20 -rw-r--r-- 1 root root 18994 Dec 2 22:01 BUILDING.txt
8 -rw-r--r-- 1 root root 6210 Dec 2 22:01 CONTRIBUTING.md
60 -rw-r--r-- 1 root root 60269 Dec 2 22:01 LICENSE
4 -rw-r--r-- 1 root root 2333 Dec 2 22:01 NOTICE
4 -rw-r--r-- 1 root root 3378 Dec 2 22:01 README.md
8 -rw-r--r-- 1 root root 6905 Dec 2 22:01 RELEASE-NOTES
20 -rw-r--r-- 1 root root 16517 Dec 2 22:01 RUNNING.txt
4 drwxr-xr-x 2 root root 4096 Dec 8 20:53 bin
4 drwxr-xr-x 1 root root 4096 Dec 22 15:52 conf
4 drwxr-xr-x 2 root root 4096 Dec 8 20:53 lib
4 drwxrwxrwx 1 root root 4096 Dec 22 15:52 logs
4 drwxr-xr-x 2 root root 4096 Dec 8 20:53 native-jni-lib
4 drwxrwxrwx 2 root root 4096 Dec 8 20:53 temp
4 drwxr-xr-x 2 root root 4096 Dec 8 20:53 webapps
4 drwxr-xr-x 7 root root 4096 Dec 2 22:01 webapps.dist
4 drwxrwxrwx 2 root root 4096 Dec 2 22:01 work
我们进入webapps.dist
目录中可以看到熟悉的tomcat工程结构:
我们将这些目录全部拷贝到webapps
目录下:
## 将当前文件拷贝到webapps目录下
cp -r ./* ../webapps
然后我们在刷新浏览器即可看到小猫图标:
- 将tomcat打包成镜像
docker commit -a 用户 -m 提交信息 容器id dockerhub用户名/仓库:标签
## 查看tomcat进程
[root@VM-0-10-centos ~]# docker ps | grep tomcat
b9dec6aec9dc tomcat "catalina.sh run" 19 minutes ago Up 15 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp my-tomcat
## 将运行中的tomcat打包成镜像
docker commit -m 'commit my-tomcat' -a 'GalenGao' b9dec6aec9dc galengao/my-tomcat:v1
- 将镜像上传到dockerhub上
## docker push dockerhub用户名/镜像:标签
docker push galengao/my-tomcat:v1
登录dockerhub网站可以查看我们最终上次的镜像: