> 技术文档 > Docker操作(含配置文件的位置和搭建私人docker仓库)

Docker操作(含配置文件的位置和搭建私人docker仓库)


1、环境配置

配置静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33 #根据实际的网络配置文件#重启虚拟机或重启网络服务systemctl restart network

更换yum源

#三段代码curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum clean allyum makecache

2、下载安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io -ysystemctl start dockerdocker version

Docker操作(含配置文件的位置和搭建私人docker仓库)

3、配置镜像加速器

使用华为云的加速器
Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)
定位地址一定是国内,国外无法使用加速器

会有一个加速器地址
根据指示完成就可以了

vi /etc/docker/daemon.json加速器地址systemctl restart dockerdocker info

如下所示就算配置完成
Docker操作(含配置文件的位置和搭建私人docker仓库)

4、Docker常用命令

docker images 查看当前本地仓库的镜像
docker search 去仓库搜索 是否有该镜像
docker pull 镜像名:版本号 下载镜像到本地仓库
dokcer run 运行容器
docker ps 查看所有正在运行的容器
docker ps -a 查看所有容器(包括启动失败和stop的容器)
docker start / stop / restart 容器id
docker rm 容器id 删除容器(停止运行的容器)
docker rmi 镜像id 删除镜像(先删除容器)
docker exec -it 进入容器
docker cp 复制
docker commit 打包提交
docker version 查看docker版本号
docker info

5、Docker拉取常用镜像,端口映射、配置文件的配置位置和挂载方式

关于端口映射由于docker版本不同,有些docker的容器的端口映射需要手动开启防火墙端口,有些docker会自动根据容器的端口映射配置宿主机的防火墙端口开放规则,建议还是手动开放需要的端口

1、nginx ( /etc/nginx/nginx.conf )

1、启动并检查是否成功

docker pull nginx:1.26.2 #随便一个稳定版本都可以docker images #查看镜像id

Docker操作(含配置文件的位置和搭建私人docker仓库)
运行镜像为容器前先检查有没有已经创造的容器
Docker操作(含配置文件的位置和搭建私人docker仓库)

docker run -di --name mynginx -p 80:80 容器id

Docker操作(含配置文件的位置和搭建私人docker仓库)

说明:-di 不懂,但是不要动
- -name 起别名 例如 mynginx 可省略docker会自动起一个随机字符串 ,建议起别名
-p 端口映射 宿主机端口:容器端口 因为nginx默认端口80 我直接就用80进行映射了

检查nginx有没有启动成功
Docker操作(含配置文件的位置和搭建私人docker仓库)
没有问题


2、配置文件

先进入容器内,容器就相当于一个虚拟机

docker exec -it mynginx bash

Docker操作(含配置文件的位置和搭建私人docker仓库)
配置文件位置 /etc/nginx/nginx.conf

Docker操作(含配置文件的位置和搭建私人docker仓库)

找到了配置文件,但发现无法编辑,修改不了nginx的配置文件
这就无法配置反向代理 或其他操作
这里就可以用挂载或复制
核心思想:用预先编辑好的配置文件替换容器内的默认配置

挂载和复制的区别

Docker操作(含配置文件的位置和搭建私人docker仓库)

1、使用挂载(前提是已经有配置好的nginx.conf)

注意,要在run的时候进行挂载 使用 -v参数
先将启动的mynginx容器stop停止,然后删除容器

docker ps -adocker stop mynginxdocker rm mynginx

重新启动nginx镜像

docker run -di --name mynginx -p 80:80 -v /root/jd.conf:/etc/nginx/nginx.conf 92c5c54280f2

-v是挂载的参数
/root/jd.com 是本地或宿主机上的文件(nginx的配置文件)
/etc/nginx/nginx.conf 是docker的nginx容器的nginx配置文件的位置
即,将本地的jd.conf作为容器的配置文件
注意要加冒号 :


Docker操作(含配置文件的位置和搭建私人docker仓库)

反向代理Tomcat提醒
如果是docker的tomcat 端口映射为8899:8080
nginx的配置文件为 proxy_pass ip:8899
ip为宿主机的IP地址

2、使用复制(前提是已经有配置好的nginx.conf)

其实原理是用宿主机的配置文件覆盖掉容器的配置文件

docker cp /root/jd.conf mynginx:/etc/nginx/nginx.conf

Docker操作(含配置文件的位置和搭建私人docker仓库)

同时cp也可复制宿主机文件到容器,或容器的文件到宿主机中

2、Tomcat

1、首页位置

docker的tomcat9与官网上的tomcat9有部分区别

启动tomcat镜像运行为容器
Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)


我们可以发现与官网上的tomcat相比,webapps里的东西都在webapps.dist文件夹中,所以如果直接访问ip:8080会报404
Docker操作(含配置文件的位置和搭建私人docker仓库)
所以我们直接将webapps.dist中的文件全部复制到webapps中
Docker操作(含配置文件的位置和搭建私人docker仓库)


再次访问tomcat,恢复正常
Docker操作(含配置文件的位置和搭建私人docker仓库)

2、配置文件

/usr/local/tomcat/conf/server.xml #配置端口
/usr/local/tomcat/conf/web.xml #配置首页

3、MySQL

1、启动MySQL

注意这里的-e 参数 是设置数据库的root密码
建议强密码 我这里直接设置为ASDF/asdf000
端口映射3306:3306
通常MySQL:8.0的镜像默认可以远程连接
若其他版本无法连接,可以进入容器内修改

Docker操作(含配置文件的位置和搭建私人docker仓库)

4、Redis

运行redis镜像 端口映射6379:6379
Docker操作(含配置文件的位置和搭建私人docker仓库)
默认redis的配置文件是空的,没有密码,只能本地连接

我们可以通过宿主机配置redis.conf通过挂载方式给redis配置
挂载的配置文件位置(容器内)/usr/local/etc/redis/redis.conf
配置文件可以修改redis密码,并设置允许其他主机远程连接

5、CentOS7

可以利用docker下载CentOS7操作系统,主要和6有关,一般用于环境配置,和vm虚拟机上的CentOS7区别不大,正常安装下载软件即可,关键点:docker中的centos7容器无法使用systemctl这套指令,所以对于在centos7容器中安装MySQL8.0后要通过其他方法启动

6、打包容器成为镜像

Docker操作(含配置文件的位置和搭建私人docker仓库)

一般常用的参数就是 -a 和 -m
docker commit -a ‘作者名字’ -m ‘镜像描述信息’ 容器id 自定义镜像名称:版本 # 一般版本使用v1~9

7、搭建Docker私人仓库(上传镜像,拉取镜像)

通过6、打包容器成为镜像 下一步就是将打包好的环境的镜像,让其他人可以pull拉取下载到docker上,一般有两种方案 这里讲解registry
Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)


启动Registry 容器

docker run -di --name myregistry -p 5000:5000 -v /opt/registry-data:/var/lib/registry 26b2eb03618e

Docker操作(含配置文件的位置和搭建私人docker仓库)
验证服务状态

curl http://localhost:5000/v2/_catalog
#应返回:{“repositories”:[]} (空仓库)

Docker操作(含配置文件的位置和搭建私人docker仓库)
客户端配置

所有机器,包括拥有私有仓库(即上传镜像)的机器和要拉取镜像的机器

Docker操作(含配置文件的位置和搭建私人docker仓库)
注意json格式,不要加注释
Docker操作(含配置文件的位置和搭建私人docker仓库)
重启docker

systemctl restart docker

若是json文件有问题就会重启失败,重新检查你的json文件 /etc/docker/daemon.json
Docker操作(含配置文件的位置和搭建私人docker仓库)
重启docker后,不要忘记启动Registry 容器


上传镜像和拉取镜像
Docker操作(含配置文件的位置和搭建私人docker仓库)

示例将newcentos7:v1镜像(打包好的容器镜像)上传到所有仓库,镜像名和版本为newcentos7_test:1.0.0

Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)
Docker操作(含配置文件的位置和搭建私人docker仓库)
这就算是上传成功了

不要忘记启动5000端口

然后进入需要拉取镜像的虚拟机
Docker操作(含配置文件的位置和搭建私人docker仓库)
此时该台主机可以拉取192.168.10.50和192.168.10.66的私有仓库里的镜像

不要忘记重启docker
另外拉取镜像的主机不需要下载Registry

Docker操作(含配置文件的位置和搭建私人docker仓库)
这里由于写错了版本1.0.0为1.00报错
修改版本后,就拉取成功了
至此搭建docker私人镜像仓库和拉取私人仓库的镜像就完成了


Author:萌木
2025/08/03