docker实战 (3) 常规配置
本节会持续更新,在项目实战中遇到的docker配置都会更新进来
docker常用命令:
docker 介绍: what: 是什么 why: 为什么用 how: 怎么用 docker 特点: 轻量级,可移植,占用资源少 # 下载镜像 docker pull mysql:5.6 # 启动镜像 docker run -p 3306:3306 --name mymysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 docker 基础命令: 镜像 docker version | docker -v docker pull 镜像名称 docker images | docker image ls docker search xxxx docker rmi xxxx -f 强制删除 容器:() docker run -d(后台运行) -p 3306:3306 -p (可以指定多个ip) 镜像 docker logs -f xxx_id 查询日志 继续监听 docker container logs xxx 查询日志 查询出所有日志 docker ps 查询正在运行的容器 docker ps -a 查询所有容器(包括停止的容器) docker exec -it xxx /bin/bash 进入容器 docekr stop xxx 停止启动的容器: docker start xxx 启动刚刚停止的容器 docker rm xxx 删除容器(非运行) -f 强制删除 docker kill xxx 强制停止容器 docker -e 设置参数(-e MYSQL_ROOT_PASSWORD=123456) 镜像构建:(一般使用DockerFile进行构建) docker build -t 构建镜像名 . (.代表DockerFile的所在路径) DcokerFile: FROM 基础镜像: RUN hu@123456
docker的远程访问设置:
1> 修改 /usr/lib/systemd/system/docker.service
注意: 如果是centos7:就是如上配置:centos6 : ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
2> 保存配置文件,重新加载
systemctl daemon-reload
3> 重启服务 systemctl docker start | restart | stop
docker pull指令失败问题:
1>因为镜像源需要FQ,导致无法从中心库下拉镜像。我们可以通过修改成国内镜像仓库来进行下拉镜像 修改 /etc/docker/daemon.json
注意:常用的国内镜像源还有:
https://docker.mirrors.ustc.edu.cn
https:
//hub-mirror.c.163.com
docker 启动相差8小时问题:
1> 启动是设置时区
docker run -itd -v /mnt/upload:/mnt -v /etc/localtime:/etc/localtime:ro -v /data/appLogs:/var/log -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -p 8118:8118 -p 8111:8111 docker_image_id /bin/bash
2> 在Dockerfile 文件中设置:
From java:8 MAINTAINER huhy RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone VOLUME /tmp ADD tranQueue.jar newfiber_project_queue.jar ENTRYPOINT ["java","-jar","newfiber_project_queue.jar"]
docker容器动态添加端口映射:
第一种修改方法: iptables 命令进行修改
1: 查询容器的ip: docker inspect <container name or id>| grep IPAddress 2: 查看Container的映射的端口 docker port <container name or id> 3: 用iptables查看容器映射情况 iptables -t nat -nvL iptables -t nat -nvL --line-number 4: 查询现有docker 容器映射列表 iptables -t nat --list-rules DOCKER 5: 添加端口映射 a, 获取容器ip docker inspect $container_name | grep IPAddress b. 添加转发规则 iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port 将容器的8000端口映射到docker主机的8001端口 iptables -t nat -A DOCKER -p tcp –dport 8001 -j DNAT –to-destination 172.17.0.19:8000 6: 删除端口映射规则 a. 获取规则编号 iptables -t nat -nL --line-number b. 根据编号删除规则 iptables -t nat -D DOCKER $num 7: 保存iptables规则 iptables-save 注意:端口映射完毕后,端口映射也不会显示出来,不能通过docker port [container_name|container_id]查询到结果
第二种修改方法: 修改配置文件进行修改
1> 找到对应容器:
2> 停止容器, 停止服务 (systemctl stop docker/service docker stop)
3> 修改 /var/lib/docker/containers/{容器 ID+ 一些字符串}/hostconfig.json 中
同时修改同目录下的 config.v2.json 中 "ExposedPorts":{"容器端口 /tcp":{}}
4> 在容器运行时添加映射
5> 重启服务, 启动容器 (systemctl start docker/service docker start)
本文来自博客园,作者:huhy,转载请注明原文链接:https://www.cnblogs.com/huhongy/p/11383766.html