mac安装docker
添加国内镜像
点鲸鱼->Preferences->daemon->Registry mirrors
https://www.daocloud.io/mirror
docker pull registry
# 启动
docker run -d -p 5000:5000 \
--name registry \
# 不设置该配置不允许删除仓库中的镜像
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-v /Users/rico/workspace/docker/registry:/var/lib/registry \
# 这个配置外挂会有问题
#-v /Users/rico/workspace/docker/registry_config/config.yml:/etc/docker/registry/config.yml \
registry
# 查看版本
docker exec registry /bin/registry -v
/bin/registry github.com/docker/distribution v2.7.1
# 查看已有镜像
curl http://127.0.0.1:5000/v2/_catalog
# 登录失败,不存在bash
docker exec -it registry bash
# 查看有哪些命令可用
docker exec -it registry ls /bin
# sh
docker exec -it registry sh
# 扩展...
sh --help
BusyBox v1.28.4 (2018-12-31 18:05:13 UTC) multi-call binary.
# 拉取gitlab
docker pull gitlab/gitlab-ce
# 启动
docker run --detach \
--hostname 127.0.0.1 \
--publish 443:443 \
--publish 8001:80 \
--publish 2222:22 \
--name gitlab \
--restart always \
--volume /Users/rico/workspace/docker/gitlab/config:/etc/gitlab \
--volume /Users/rico/workspace/docker/gitlab/logs:/var/log/gitlab \
--volume /Users/rico/workspace/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
# gitlab也可安装指定版本,如:sameersbn/gitlab:8.11.6
# 查看版本方法:进入hub.docker.con,然后在搜索栏中输入gitlab搜索即可找到官网的所有gitlab版本,然后根据自己的需要找到对应的版本安装即可。
# 进入
docker exec -it gitlab bash
# version
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
11.9.8
# 配置修改
vim /etc/gitlab/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://127.0.0.1
# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# reconfigur 会把配置同步到 gitlab.yml
gitlab-ctl reconfigure
# gitlab.yml 头部有注释,不能直接修改,会被覆盖
vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
# 重启
gitlab-ctl restart
# 或者在容器外
docker exec gitlab gitlab-ctl restart
# tag 跟 镜像ID或者REPOSITORY
# latest=11.9.7
docker tag 7653f786781a 127.0.0.1:5000/gitlab:11.9.7
docker push 127.0.0.1:5000/gitlab:11.9.7
删除配置参看第3步骤
docker pull busybox
docker tag busybox 127.0.0.1:5000/busybox
docker push 127.0.0.1:5000/busybox
curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" http://127.0.0.1:5000/v2/busybox/manifests/latest
# 上面接口返回的都是 blob,而不是 manifest(很奇怪)
# 传第一个digest给删除接口;返回成功
curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X DELETE http://127.0.0.1:5000/v2/busybox/manifests/sha256:af2f74c517aac1d26793a6ed05ff45b299a037e1a9eefeae5eacda133e70a825
# 执行回收,此时反而会显示 manifest
# 得到mainfest之后,再请求一遍删除流程即可
# 执行之后回收空间
docker exec registry /bin/registry garbage-collect /etc/docker/registry/config.yml
# 后来发现,删除的时候还可以直接去目录里查询manifest
cd registry/v2/repositories/busybox/_manifests/revisions/sha256
docker restart registry
nmap 查看ip段内有多少ip,并会显示有哪些打开的端口
sudo nmap -PU 172.28.0.0/24
ssh -N -f -R 5000:127.0.0.1:5055 root@IP
# 参考地址
https://hub.docker.com/_/redis
# gitlab 添加redis项目
redis
├── Dockerfile
├── README.md
├── build.sh
├── docker-compose.yml
└── etc
└── redis.conf
# Dockerfile
FROM redis:5.0.4
MAINTAINER rico likeh2o@qq.com
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY etc/redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
# docker-compose.yml
version: "2"
services:
redis:
image: 127.0.0.1:5000/base/redis:5.0.4
restart: always
container_name: redis
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
ports:
- "6379:6379"
volumes:
- [DIR_DATA]:/data
networks:
- zy666
networks:
zy666:
driver: bridge
# build.sh
#!/bin/bash
docker build -t 127.0.0.1:5000/base/redis:5.0.4 .
docker push 127.0.0.1:5000/base/redis:5.0.4
# redis.conf (官网源码找到一份)
# 注释掉本机绑定
# bind 127.0.0.1
# 在宿主机 redis-cli 连接上之后会提示错误,同时给出了可以正常连接的方案,采用增加密码的方式
# 需要auth密码
requirepass 123456
# 持久化
appendonly yes
# 不要开启 daemonize yes
daemonize no