Docker是一种轻量级容器化技术,它能够将应用程序及其依赖项打包成一个独立的容器,提供了一种快速、可靠、可移植的方式来部署应用。而Docker Hub则是一个广受欢迎的公共镜像仓库,类似Github供开发者们分享、存储和获取镜像。
有时候看到自己喜欢的内容,万一哪一天作者修仙,删库飞升了,怎么办?这个时候克隆docker镜像,上传到自己docker hub仓库为己用就显得很有意义。
这次我就分两个部分来讲一下如何克隆镜像 如何修改镜像,上传到仓库为己用。
本次就以上一篇的独角数卡为例,为了都能看的懂,我傻瓜式从头教到尾
1.安装docker和docker-compose(装过可以忽略)
输入下面的命令,两个代码就可以,直接安装即可:
1 2 3 4 5
| sudo apt-get update
sudo apt-get install docker docker-compose
|
2.创建安装的目录
1 2 3 4 5 6 7 8 9 10 11
| 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文件,并且授予权限
1 2 3 4 5
| touch env.conf
chmod -R 777 env.conf
|
4.编辑docker-compose.yml文件,输入以下命令:
1 2 3
| vim docker-compose.yml
|
代码如下,直接复制即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 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文件
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| 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.检查端口是否被占用
7.直接拉起镜像
好了,接下来的安装过程我就直接忽略哈,一般问题不大,直接开始克隆过程了。
8.先登录到Docker Hub,输入命令后,填入账号密码,以完成登录
9.输入以下命令找到镜像的名称,stilleshan/dujiaoka
1 2 3 4
| docker images #查看镜像命令,镜像的名称stilleshan/dujiaoka
|
10.之后重新标记镜像,可以使用docker tag命令重新标记你想要上传的镜像,后面记得加镜像标签
1 2 3
| docker tag stilleshan/dujiaoka:latest 你的用户名/你的仓库名:latest
|
或者
1 2 3
| docker tag (镜像id) 你的用户名/你的仓库名:latest
|
上面两种标记方法都是可行的,一种是镜像名称,一种是镜像id,记住不是容器id。之后会有两个镜像id一样的。
11.接着再输入docker images,查看通过tag标记的镜像,复制镜像的名称
12.最后上传镜像,可以使用以下命令将重新标记的镜像上传到仓库。
1 2 3
| docker push 你的用户名/你的仓库名:latest
|
结束语录:
肿么样,是不是灰常的简单。细看整个过程无非就是克隆标记,push到仓库这么简单。一切顺利完成,你可以删除本地所有的文件 镜像 缓存,同时退出登录,在重新拉起镜像,查看是否
完整无暇。
最后最后,寄出本人的卸载大法:
a.删除创建的目录
1 2 3 4 5 6 7 8 9 10
| sudo -i
cd /root/data/docker_data/shop
cd ..
rm -rf /root/data/docker_data/shop
|
b.删除镜像
1 2 3 4 5 6
| docker images
docker rmi -f 镜像id #当然镜像名称也是可以的,推荐用id
|
c.进入本地环境目录删除(慎用)
1 2 3 4
| var/lib/docker/overlay2 #除了L文件夹,其它全部删除,包括L文件夹里面的,留空就可以了
|
d.清理缓存和临时文件(非常慎重)
1 2 3 4
| docker system prune -a
|
这将清除不再使用的镜像、容器和相关的缓存文件。请注意,这个命令会删除所有未使用的镜像和容器,包括本地未推送的镜像,所以请谨慎操作。