Docker之路
安装
yum install docker
添加阿里云镜像加速器
重装
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
# yum-utils 提供了命令 yum-config-manager,device-mapper-persistent-data和lvm2由需要 devicemapper存储驱动程序。
yum install -y yum-utils
device-mapper-persistent-data
lvm2
# 设置 yum 源为 稳定的版本
# 阿里的源,国内使用较快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方的源(国内使用比较慢)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 生成缓存
yum makecache
# 如果要安装指定的版本
yum list docker-ce --showduplicates | sort -r
# 填入版本号到下面的命令(docker-ce-19.03.0-3.el7)
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 安装最新稳定版本 Docker CE
yum install docker-ce docker-ce-cli containerd.io
可能会遇到的问题
Cannot connect to the Docker daemon at tcp://0.0.0.0:2375. Is the docker daemon running?
# 执行以下操作
unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps # 查看后正常
如图:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法
# 进行如下步骤操作
systemctl daemon-reload
service docker restart
service docker status (should see active (running))
# 最近发现容器无法正常停止,docker stop了之后docker ps还是存在,启动的时候总是显示名称已存在或端口已被绑定,使用如下命令还是没有作用,于是docker升级,问题没有复现
# 强制清理容器
docker rm -f jenkins
# 清理网络占用
docker network disconnect --force bridge jenkins
docker0 特点:
- 默认域名不能访问
- --link可以打通,比较麻烦
自定义网络
如何创建一个自定义网络
创建自定义网络的注意参数
创建自定义网络!
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
启动容器的时候指定网络 --net
查看网络信息
不同的集群使用不同的网络,保证集群的安全和健康
网络联通
# 查看本地挂载
docker volume ls
Eureka集群搭建
这种方式只是为了进行测试自定义网络的特性
# 在同一网络下创建的容器可以将服务名当作域名进行使用
docker run -d --name eureka7001.com -p 7001:7001 -v /micserver/config:/config --net mynet ibo-eureka:1.0.1 --spring.additional-location=/config/application-dev7001.yml
docker run -d --name eureka7002.com -p 7002:7002 -v /micserver/config:/config --net mynet ibo-eureka:1.0.1 --spring.additional-location=/config/application-dev7002.yml --spring.profiles.active=dev7002
# `--spring.additional-location` 指定使用外部配置文件
docker run -d --name eureka7003.com -p 7003:7003 -v /micserver/config:/config --net mynet ibo-eureka:1.0.1 --spring.additional-location=/config/application-dev7003.yml --spring.profiles.active=dev7003
--spring.additional-location
指定使用外部配置文件
Dockerfile
这个是我创建eureka镜像的dockerfile
# 依赖一个瘦身版的jdk
FROM openjdk:8-jdk-alpine
# 将package从源路径添加到目标路径
ADD /target/cloud-eureka-server-1.0-SNAPSHOT.jar ibo-eureka.jar
# 挂载指定文件路径 {宿主路径}:{容器路径}
VOLUME /micserver/eureka/config:/config
# 容器开放的端口(这里指定后—P就会随机到这里)
EXPOSE 7001 7002 7003
# 镜像构建完成后,如果要启动容器,就会运行此命令,ENTRYPOINT会将run后的参数进行追加
ENTRYPOINT ["java","-jar","ibo-eureka.jar"]