1. View the version information of docker
# docker version Client: Version:18.03.0-ce API version:1.37 Go version:go1.9.4 Git commit:0520e24 Built:Wed Mar 21 23:09:15 2018 OS/Arch:linux/amd64 Experimental:false Orchestrator:swarm Server: Engine: Version:18.03.0-ce API version:1.37 (minimum version 1.12) Go version:go1.9.4 Git commit:0520e24 Built:Wed Mar 21 23:13:03 2018 OS/Arch:linux/amd64 Experimental:false
2. Build a local private warehouse
# mkdir -p /opt/data/registry # sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry Unable to find image 'registry:latest' locally latest: Pulling from library/registry 81033e7c1d6a: Pull complete b235084c2315: Pull complete c692f3a6894b: Pull complete ba2177f3a70e: Pull complete a8d793620947: Pull complete Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54 Status: Downloaded newer image for registry:latest 3e7d9879c53bc6d0e9001c939933dc17a71a861d85f8bf5942e4873a78fd0d65 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/centos v1 f6874eba64af 4 minutes ago 69.8MB ubuntu latest 452a96d81c30 10 days ago 79.6MB hello-world latest e38bc07ac18e 3 weeks ago 1.85kB centos latest e934aafc2206 4 weeks ago 199MB registry latest d1fd7d86a825 3 months ago 33.3MB google/cadvisor latest 75f88e3ec333 5 months ago 62.2MB
3. Mark the container
# docker tag ubuntu:latest 10.0.0.143:5000/test # docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/centos v1 f6874eba64af 6 minutes ago 69.8MB 10.0.0.143:5000/test latest 452a96d81c30 10 days ago 79.6MB ubuntu latest 452a96d81c30 10 days ago 79.6MB hello-world latest e38bc07ac18e 3 weeks ago 1.85kB centos latest e934aafc2206 4 weeks ago 199MB registry latest d1fd7d86a825 3 months ago 33.3MB google/cadvisor latest 75f88e3ec333 5 months ago 62.2MB
4. Upload the image to the warehouse
# docker push 10.0.0.143:5000/test The push refers to repository [10.0.0.143:5000/test] Get https://10.0.0.143:5000/v2/: http: server gave HTTP response to HTTPS client
Error report description: Docker uses https by default for interacting with docker registry since 1.3.x, but the private warehouse built here only provides http services, so the above error is reported when interacting with the private warehouse. Therefore, you need to increase the startup parameter to use http access by default when starting the docker server
5. Solution:
# vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd ExecStart=/usr/bin/dockerd --registry-mirror=https://ag3w25ij.mirror.aliyuncs.com --insecure-registry 10.0.0.143:5000 # systemctl restart docker.service Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units. # systemctl daemon-reload # systemctl restart docker.service # docker push 10.0.0.143:5000/test The push refers to repository [10.0.0.143:5000/test] Get http://10.0.0.143:5000/v2/: dial tcp 10.0.0.143:5000: getsockopt: connection refused # lsof -i :5000 # sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 2366bf18e5e14a776a96342598091f699356a619faf3bbe8e0b7848f017290fe # docker push 10.0.0.143:5000/test The push refers to repository [10.0.0.143:5000/test] 059ad60bcacf: Pushed 8db5f072feec: Pushed 67885e448177: Pushed ec75999a0cb1: Pushed 65bdd50ee76a: Pushed latest: digest: sha256:90f24abe180424046a5d53f6fc6f9fdb8f79b835cb2fd7d1a782e4c30dfb5dcc size: 1357