第一部分:本地克隆它人docker镜像,上传到自己docker hub仓库为己用

Docker是一种轻量级容器化技术,它能够将应用程序及其依赖项打包成一个独立的容器,提供了一种快速、可靠、可移植的方式来部署应用。而Docker Hub则是一个广受欢迎的公共镜像仓库,类似Github供开发者们分享、存储和获取镜像。

有时候看到自己喜欢的内容,万一哪一天作者修仙,删库飞升了,怎么办?这个时候克隆docker镜像,上传到自己docker hub仓库为己用就显得很有意义。

这次我就分两个部分来讲一下如何克隆镜像 如何修改镜像,上传到仓库为己用。

本次就以上一篇的独角数卡为例,为了都能看的懂,我傻瓜式从头教到尾

1.安装docker和docker-compose(装过可以忽略)

输入下面的命令,两个代码就可以,直接安装即可:


sudo apt-get update

sudo apt-get install docker docker-compose

2.创建安装的目录


sudo -i

mkdir -p /root/data/docker_data/shop

cd /root/data/docker_data/shop

mkdir storage uploads

chmod -R 777 storage uploads

3.创建一个env.conf文件,并且授予权限


touch env.conf

chmod -R 777 env.conf

4.编辑docker-compose.yml文件,输入以下命令:


vim docker-compose.yml

代码如下,直接复制即可:


version: "3"

services:
  web:
    image: stilleshan/dujiaoka
    environment:
        # - INSTALL=false
        - INSTALL=true
        # - MODIFY=true
    volumes:
      - ./env.conf:/dujiaoka/.env
      - ./uploads:/dujiaoka/public/uploads
      - ./storage:/dujiaoka/storage
    ports:
      - 6789:80         # 6789可以改成任意服务器没有使用过的端口,80不要修改
    restart: always
 
  db:
    image: mariadb:focal
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=changeyourpassword
      - MYSQL_DATABASE=dujiaoka
      - MYSQL_USER=dujiaoka
      - MYSQL_PASSWORD=changeyourpassword
    volumes:
      - ./mysql:/var/lib/mysql

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - ./redis:/data


5.编辑env.conf文件


vim env.conf

代码如下:


APP_NAME=店铺
APP_ENV=local
APP_KEY=base64:rKwRuI6eRpCw/9e2XZKKGj/Yx3iZy5e7+FQ6+aQl8Zg=
APP_DEBUG=true
APP_URL=https://你的域名

LOG_CHANNEL=stack

# 数据库配置
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=dujiaoka
DB_USERNAME=dujiaoka
DB_PASSWORD=changeyourpassword

# redis配置
REDIS_HOST=redis
REDIS_PASSWORD=
REDIS_PORT=6379

BROADCAST_DRIVER=log
SESSION_DRIVER=file
SESSION_LIFETIME=120


# 缓存配置
# file为磁盘文件  redis为内存级别
# redis为内存需要安装好redis服务端并配置
CACHE_DRIVER=redis

# 异步消息队列
# sync为同步  redis为异步
# 使用redis异步需要安装好redis服务端并配置
QUEUE_CONNECTION=redis

# 后台语言
## zh_CN 简体中文
## zh_TW 繁体中文
## en    英文
DUJIAO_ADMIN_LANGUAGE=zh_CN

# 后台登录地址
ADMIN_ROUTE_PREFIX=/admin

# 是否开启https (前端开启了后端也必须为true)
# 后台登录出现0err或者其他登录异常问题,大概率是开启了https而后台没有开启,把下面的false改为true即可
ADMIN_HTTPS=false

6.检查端口是否被占用


lsof -i:6789

7.直接拉起镜像



docker-compose up -d

好了,接下来的安装过程我就直接忽略哈,一般问题不大,直接开始克隆过程了。

8.先登录到Docker Hub,输入命令后,填入账号密码,以完成登录


docker login

9.输入以下命令找到镜像的名称,stilleshan/dujiaoka


docker images     #查看镜像命令,镜像的名称stilleshan/dujiaoka


10.之后重新标记镜像,可以使用docker tag命令重新标记你想要上传的镜像,后面记得加镜像标签


docker tag stilleshan/dujiaoka:latest 你的用户名/你的仓库名:latest

或者


docker tag (镜像id) 你的用户名/你的仓库名:latest

上面两种标记方法都是可行的,一种是镜像名称,一种是镜像id,记住不是容器id。之后会有两个镜像id一样的。

11.接着再输入docker images,查看通过tag标记的镜像,复制镜像的名称

12.最后上传镜像,可以使用以下命令将重新标记的镜像上传到仓库。


docker push 你的用户名/你的仓库名:latest  

结束语录:

肿么样,是不是灰常的简单。细看整个过程无非就是克隆标记,push到仓库这么简单。一切顺利完成,你可以删除本地所有的文件 镜像 缓存,同时退出登录,在重新拉起镜像,查看是否 完整无暇。

最后最后,寄出本人的卸载大法:

a.删除创建的目录


sudo -i

cd /root/data/docker_data/shop

cd ..

rm -rf /root/data/docker_data/shop


b.删除镜像


docker images

docker rmi -f 镜像id          #当然镜像名称也是可以的,推荐用id


c.进入本地环境目录删除(慎用)


var/lib/docker/overlay2     #除了L文件夹,其它全部删除,包括L文件夹里面的,留空就可以了


d.清理缓存和临时文件(非常慎重)


docker system prune -a   


这将清除不再使用的镜像、容器和相关的缓存文件。请注意,这个命令会删除所有未使用的镜像和容器,包括本地未推送的镜像,所以请谨慎操作。