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
3、配置镜像加速器
使用华为云的加速器
定位地址一定是国内,国外无法使用加速器
会有一个加速器地址
根据指示完成就可以了
vi /etc/docker/daemon.json加速器地址systemctl restart dockerdocker info
如下所示就算配置完成
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 run -di --name mynginx -p 80:80 容器id
说明:-di 不懂,但是不要动
- -name 起别名 例如 mynginx 可省略docker会自动起一个随机字符串 ,建议起别名
-p 端口映射 宿主机端口:容器端口 因为nginx默认端口80 我直接就用80进行映射了
检查nginx有没有启动成功
没有问题
2、配置文件
先进入容器内,容器就相当于一个虚拟机
docker exec -it mynginx bash

配置文件位置 /etc/nginx/nginx.conf
找到了配置文件,但发现无法编辑,修改不了nginx的配置文件
这就无法配置反向代理 或其他操作
这里就可以用挂载或复制
核心思想:用预先编辑好的配置文件替换容器内的默认配置
挂载和复制的区别
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作为容器的配置文件
注意要加冒号 :
反向代理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
同时cp也可复制宿主机文件到容器,或容器的文件到宿主机中
2、Tomcat
1、首页位置
docker的tomcat9与官网上的tomcat9有部分区别
启动tomcat镜像运行为容器
我们可以发现与官网上的tomcat相比,webapps里的东西都在webapps.dist文件夹中,所以如果直接访问ip:8080会报404
所以我们直接将webapps.dist中的文件全部复制到webapps中
再次访问tomcat,恢复正常
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的镜像默认可以远程连接
若其他版本无法连接,可以进入容器内修改
4、Redis
运行redis镜像 端口映射6379:6379
默认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、打包容器成为镜像
一般常用的参数就是 -a 和 -m
docker commit -a ‘作者名字’ -m ‘镜像描述信息’ 容器id 自定义镜像名称:版本 # 一般版本使用v1~9
7、搭建Docker私人仓库(上传镜像,拉取镜像)
通过6、打包容器成为镜像 下一步就是将打包好的环境的镜像,让其他人可以pull拉取下载到docker上,一般有两种方案 这里讲解registry、
启动Registry 容器
docker run -di --name myregistry -p 5000:5000 -v /opt/registry-data:/var/lib/registry 26b2eb03618e
验证服务状态
curl http://localhost:5000/v2/_catalog
#应返回:{“repositories”:[]} (空仓库)
客户端配置
所有机器,包括拥有私有仓库(即上传镜像)的机器和要拉取镜像的机器
注意json格式,不要加注释
重启docker
systemctl restart docker
若是json文件有问题就会重启失败,重新检查你的json文件 /etc/docker/daemon.json
重启docker后,不要忘记启动Registry 容器
上传镜像和拉取镜像
示例将newcentos7:v1镜像(打包好的容器镜像)上传到所有仓库,镜像名和版本为newcentos7_test:1.0.0
这就算是上传成功了
不要忘记启动5000端口
然后进入需要拉取镜像的虚拟机
此时该台主机可以拉取192.168.10.50和192.168.10.66的私有仓库里的镜像
不要忘记重启docker
另外拉取镜像的主机不需要下载Registry
这里由于写错了版本1.0.0为1.00报错
修改版本后,就拉取成功了
至此搭建docker私人镜像仓库和拉取私人仓库的镜像就完成了
Author:萌木
2025/08/03