Docker自定义镜像并推送到dockerhub
一、B要条件
- 能正常访问docker.io
- 在hub.docker.com网址注册账户
二、选择一个操作系统作为基础环境
本文使用rockylinux/rockylinux:8.5
三、创建dockerfile
其中rockylinux/rockylinux:8.5
和crazy.pig
请替换成自己的镜像基础和自己的名字
[root@vr8 ray]# mkdir docker_build
[root@vr8 ray]# cd docker_build/
[root@vr8 docker_build]# clear
[root@vr8 docker_build]# ls
[root@vr8 docker_build]# cat >> dockerfile << EOF
> FROM rockylinux/rockylinux:8.5
> MAINTAINER crazy.pig
> EOF
[root@vr8 docker_build]# ll
总用量 4
-rw-r--r--. 1 root root 52 1月 26 10:40 dockerfile
[root@vr8 docker_build]# cat dockerfile
FROM rockylinux/rockylinux:8.5
MAINTAINER crazy.pig
四、使用dockerfile构建自己的docker镜像
[root@vr8 docker_build]# docker build -t customize-rocky:v8.5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM rockylinux/rockylinux:8.5
8.5: Pulling from rockylinux/rockylinux
72a2451028f1: Pull complete
Digest: sha256:2fb0499bf87069010e5d5ba1d44cee1504f9f87b9e5889f7d885c325cdc71967
Status: Downloaded newer image for rockylinux/rockylinux:8.5
---> a1e37a3cce8f
Step 2/2 : MAINTAINER crazy.pig
---> Running in 95239220d111
Removing intermediate container 95239220d111
---> 40fc2a6b4bac
Successfully built 40fc2a6b4bac
Successfully tagged customize-rocky:v8.5
查看构建结果
[root@vr8 docker_build]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
customize-rocky v8.5 40fc2a6b4bac 4 minutes ago 205MB
五、定义要推送的标签
因为本地的customize镜像我还要进行多种环境的构建,所以在dockerfile中没有一次性使用生产标签来定义,而在推送前进行标签的确定。所以有这一步。docker tag命令指定的repository请一定要使用自己在docker网站上注册的用户名来定义。例如:下面命令中的crazyrayshi就是我的用户名。
[root@vr8 docker_build]# docker tag customize-rocky:v8.5 crazyrayshi/customize-rocky:v8.5
[root@vr8 docker_build]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
crazyrayshi/customize-rocky v8.5 40fc2a6b4bac 29 minutes ago 205MB
customize-rocky v8.5 40fc2a6b4bac 29 minutes ago 205MB
六、给docker配置代理(docker.io网址无法直接访问)
[root@vr8 docker_build]# sudo mkdir -p /etc/systemd/system/docker.service.d
[root@vr8 docker_build]# cat >> /etc/systemd/system/docker.service.d/proxy.conf << EOF
> [Service]
> Environment="HTTP_PROXY=http://192.168.56.1:10809/"
> Environment="HTTPS_PROXY=http://192.168.56.1:10809/"
> Environment="NO_PROXY=localhost,127.0.0.1,192.168.56.0/24"
> EOF
[root@vr8 ray]# systemctl daemon-reload
[root@vr8 ray]# service docker restart
七、登录docker账号
请一定确保Login Succeeded
出现
[root@vr8 docker_build]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: crazyrayshi
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
八、推送镜像到dockerhub
[root@vr8 docker_build]# docker push crazyrayshi/customize-rocky:v8.5
[root@vr8 ray]# docker push crazyrayshi/customize-rocky:v8.5
The push refers to repository [docker.io/crazyrayshi/customize-rocky]
65dbea0a4b39: Pushed
v8.5: digest: sha256:6c7930d9d5d1afc378274a93086590c959dcb8f3bc4b375c04b0ed09529aae99 size: 529
九、结局圆满,此致敬礼
十、启动镜像环境
[root@vr8 ray]# docker run -dti --name rockylinux -v /data/lfs:/data/lfs crazyrayshi/customize-rocky:v8.5
2e5a65c2df8d1565993ff0abd551506eddaed3d4174abb8b0069082a566ef7e7
[root@vr8 ray]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e5a65c2df8d crazyrayshi/customize-rocky:v8.5 "/bin/bash" 3 seconds ago Up 3 seconds rockylinux
[root@vr8 ray]# docker exec -it rockylinux /bin/bash
[root@2e5a65c2df8d /]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)