没长正的技术专栏 勤动手、多思考

Docker 实战

2018-10-01

阅读:


Docker实战

容器运用比较广泛,微服务、CI。

常见概念理解:容器(软件包)、Docker(容器管理平台)、K8s(容器集群管理、分布式容器管理平台)、Ingress

案例

[2018-10-11]

1. 启动Nginx

docker run -d -p 80:80 --name nginx 
-v C:/Users/xusj/Git/:/Users/xusj/Git/:rw 
-v C:/Users/xusj/nginx/vhosts/:/etc/nginx/conf.d/:ro  
	registry.cn-hangzhou.aliyuncs.com/xusj_repo/nginx
# 涉及认证、Git、 挂载
docker run -d -p 80:80 -p 443:443 --name nginx -v /etc/letsencrypt/archive/blogyw.meizhangzheng.com/:/etc/letsencrypt/archive/blogyw.meizhangzheng.com/:rw -v /usr/meizhangzheng/git/:/usr/meizhangzheng/git/:rw -v /usr/meizhangzheng/nginx/vhosts/:/etc/nginx/conf.d/:ro  meizhangzheng/nginx

# mysql 启动类,并配置挂载路径
docker run -itd -p 3307:3306 --name test_mysql -v /usr/local/mysqlData/test/conf:/etc/mysql -v /usr/local/mysqlData/test/data:/var/lib/mysql -v /usr/local/mysqlData/test/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=123456 mysql

2.启动Eureka服务


docker run -d -p 8761:8761 --name eureka registry.cn-hangzhou.aliyuncs.com/xusj_repo/eurekaservice

[2019-01-02]

3.启动redis服务


docker run -d -p 6379:6379 --name redis -v C:/Users/xusj/data:/data  registry.cn-hangzhou.aliyuncs.com/xusj_repo/redis:5.0.3 --appendonly yes

– 新版6.0.9

mkdir -p /usr/meizhangzheng/redis/conf

mkdir -p /usr/meizhangzheng/redis/data

wget https://github.com/redis/redis/blob/6.0.9/redis.conf

docker run -d --privileged=true -p 6379:6379 --restart always -v /usr/meizhangzheng/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/meizhangzheng/redis/data:/data --name redis meizhangzheng/redis:6.0.9 redis-server /etc/redis/redis.conf --appendonly yes


redis 开启远程服务

1. 注释掉 bind 127.0.01

2. 将protected-mode yes 修改为 protected-mode no

3. 修改密码  requirepass  xxxx

4. 重启redis服务


redis参考文档

扩展-基于Docker安装redis集群

[2019-01-08]

4.启动dashboard服务


-- 挂在多目录
docker run -d -p 9000:9000 --name dashboard -v c:/data/logs:/data/logs -v c:/data/tmp:/data/tmp dashboard-server /bin/bash

docker run -d -p 9000:9000 --name dashboard -v c:/data/logs:/data/logs dashboard-server /bin/bash

docker run -d -p 9000:9000 --name dashboard -v c:/data/logs:/data/logs -e PARAMS="" dashboard-server /bin/bash
构建dashboard镜像: 进入dockerfile目录,执行命令: docker build -t dashboard-server .

5.启动sdma服务


docker run -d -p 8092:8092 --name sdma -v c:/data/logs:/data/logs -v c:/data/tmp:/data/tmp sdma-server /bin/bash

6. 启动nexus服务

 	docker run -d -p 8081:8081 --name nexus meizhangzheng/nexus3
 	
 # 首次登陆,获取用户密码;  admin/pwd,然后重置密码
 # docker exec -it 容器id bash 进入容器
 # cat /opt/sonatype/sonatype-work/nexus3/admin.password

nexus 配置

[2019-01-08]

1.常见异常日志

例:实时查看docker容器名为eureka_config_1的最后10行日志

  $ sudo docker logs -f -t --tail 10 eureka_config_1

(1) C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint dashboard (50e202813f9aad2440c489382f1d2b2c8b24075e584a13c8776943ab17f23bff): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:8089:tcp:172.17.0.2:8089: input/output error. —-> 重启

(2) /data/run.sh: line 19: syntax error: unexpected end of file —-> 将脚本编码格式转换:从dos 转为unix (使用UE)

[2021-04-26]

docker: Error response from daemon: service endpoint with name jenkins already exists.

场景:启动容器时

#运用镜像启动容器命令  -p 可绑定多个端口 如80:80 443:443
docker run -d -p 8080:8080 -p 50000:50000 -v /usr/meizhangzheng/jenkins:/var/jenkins_home --name jenkins --restart always --privileged=true  -u root jenkins/jenkins

分析:说明端口/服务被占用了。

1.解决方案

  1. 移除服务
docker rm -f jenkins
  1. 清理此容器的网络占用 格式:docker network disconnect –force 网络模式 容器名称
docker network disconnect --force bridge jenkins
  1. 简查是否还有同名容器占用 格式:docker network inspect 网络模式
docker network inspect bridge

注:当时发现仍然未清理,再执行 清理容器网络语句。

  1. 重新启动
docker run ...

2.特别说明

如果原来已经部署成功了,因为已经有相应的配置信息,可考虑先停掉原来的服务,修改服务名即可。

#运用镜像启动容器命令  将jenkins 改为 jenkins1
docker run -d -p 8080:8080 -p 50000:50000 -v /usr/meizhangzheng/jenkins:/var/jenkins_home --name jenkins1 --restart always --privileged=true  -u root jenkins/jenkins

参考文档

docker文档

菜鸟教程-docker

docker mysql

【解决方案】docker: Error response from daemon: endpoint with name xxx already exists in network bridge


欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


下一篇 Docker常用命令

Comments

Content