文章目录

  • /var/lib/docker 目录解释
  • [Docker Volume - 目录挂载以及文件共享](https://kebingzao.com/2019/02/25/docker-volume/#dockerfile-volume-%E7%9A%84%E6%9D%83%E9%99%90%E5%92%8C%E8%AE%B8%E5%8F%AF)
  • Docker-compose ports 与 Dockerfile EXPOSE 区别
  • docker 内“Temporary failure resolving 'security.ubuntu.com” 报错信息
  • 查看各容器IP地址
  • 查看docker container logs size
  • 清理docker container logs
  • 如何更改 docker-compose 启动的正在运行中的服务配置
  • Linux安装docker-compose
  • 修改已运行的Docker容器启动配置参数
    • 方法一:Docker 命令修改
    • 方法二:直接改配置文件
  • 修改docker container 的挂载路径
  • 清理docker
    • 手动清理
    • 自动清理
  • 修改docker默认的存储位置
  • Docker mysql 导出、导入数据
  • [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf
  • 其他命令
  • docker: Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused "exec: \"prom/pushgateway\": stat prom/pushgateway: no such file or directory".
  • docker ps 完整输出
  • docker: Error response from daemon: conflicting options: port publishing and the container type network mode.
  • docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx (d639abcca455cfb2ae23110a56b08732522da0cb64146f7141ca99a8c54704b7): Error starting userland proxy: listen tcp 0.0.0.0:80: listen: address already in use.
  • Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  • 运行容器之后,一直处于restarting 状态
  • docker 服务启动失败
    • iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT ...
    • failed to start daemon: Error initializing network controller: Error creating default "bridge" network: could not find an available, non-overlapping
  • iptables no chain/target/match by that name
  • root 进入docker 容器(加参数 -u root)

/var/lib/docker 目录解释

    * /var/lib/docker/devicemapper/devicemapper/data         * 用来存储相关的存储池数据      * /var/lib/docker/devicemapper/devicemapper/metadata     * 用来存储相关的元数据。* /var/lib/docker/devicemapper/metadata/                 * 用来存储 device_id、大小、以及传输_id、初始化信息* /var/lib/docker/devicemapper/mnt                       * 用来存储挂载信息 * /var/lib/docker/container/                             * 用来存储容器信息* /var/lib/docker/graph/                                 * 用来存储镜像中间件及本身详细信息和大小 、以及依赖信息* /var/lib/docker/repositores-devicemapper               * 用来存储镜像基本信息* /var/lib/docker/tmp                                    * docker临时目录   * /var/lib/docker/trust                                  * docker信任目录* /var/lib/docker/volumes                               * docker卷目录

Docker Volume - 目录挂载以及文件共享

Docker-compose ports 与 Dockerfile EXPOSE 区别

#  ports:暴露容器端口到主机任意端口或指定端口,用法:
# docker-compose.yml
ports:- "80:80"- "91:81"# expose:将当前容器的端口暴露给同一个networks 的其他容器,用法:# docker-compose.yml
expose: - '3000'- '9000'# Dockerfile
EXPOSE "3000"

docker 内“Temporary failure resolving 'security.ubuntu.com” 报错信息

解决方案:
vim /etc/docker/daemon.json
{                                                                          "dns": ["8.8.8.8", "114.114.114.114"]
}   重启docker
systemctl restart docker

查看各容器IP地址

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

查看docker container logs size

ls -lh $(find /var/lib/docker/containers/ -name *-json.log)

清理docker container logs

#!/bin/shecho "==================== start clean docker containers logs =========================="logs=$(find /var/lib/docker/containers/ -name *-json.log)for log in $logsdoecho "clean logs : $log"cat /dev/null > $logdoneecho "==================== end clean docker containers logs   =========================="

如何更改 docker-compose 启动的正在运行中的服务配置

docker-compose up -d

Linux安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改已运行的Docker容器启动配置参数

我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动

方法一:Docker 命令修改

docker container update --restart=always 容器名字

方法二:直接改配置文件

  • 首先停止容器,不然无法修改配置文件

  • 配置文件路径为:/var/lib/docker/containers/容器ID

    在该目录下找到一个文件 hostconfig.json ,找到该文件中关键字 RestartPolicy

    修改前配置:“RestartPolicy”:{“Name”:“no”,“MaximumRetryCount”:0}

    修改后配置:“RestartPolicy”:{“Name”:“always”,“MaximumRetryCount”:0}

  • 最后启动容器。

修改docker container 的挂载路径

1、停止docker服务

systemctl stop docker.service(关键,修改之前必须停止docker服务)

2、vim /var/lib/docker/containers/container-ID/hostconfig.json

“Binds”:["/home/website:/usr/share/nginx/website"]

2、vim /var/lib/docker/containers/container-ID/config.v2.json

  • 修改配置文件中的目录位置,然后保存退出
  • 大致格式如下:

“MountPoints”:{
“容器内文件路径”:{“Source”:“宿主机文件路径”,“Destination”:“容器内文件路径”,“RW”:true,“Name”:"",“Driver”:"",“Type”:“bind”,“Relabel”:“rw”,“Propagation”:“rprivate”,“Spec”:{“Type”:“bind”,“Source”:"宿主机文件路径,“Target”:“容器内文件路径”}}
}

  • 示例:-v /home/website:/usr/share/nginx/website

“MountPoints”:{
“/usr/share/nginx/website”:{“Source”:"/home/website",“Destination”:"/usr/share/nginx/website",“RW”:true,“Name”:"",“Driver”:"",“Type”:“bind”,“Relabel”:“rw”,“Propagation”:“rprivate”,“Spec”:{“Type”:“bind”,“Source”:"/home/website",“Target”:"/usr/share/nginx/website"}}
}

3、启动docker服务

systemctl start docker.service

4、启动docker容器

docker start <container-name/ID>

摘自:https://blog.csdn.net/zedelei/article/details/90208183

清理docker

手动清理

删除所有无用容器

docker ps -a | awk '{ print $1}' | wc -l 统计共有多少容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n -num) //删除倒数num个容器如果无用的比较多,启动所有有用的,再删除,运行中的容器是不能被移除的1、删除所有悬空镜像,不删除未使用镜像:
docker rmi $(docker images -f "dangling=true" -q)
2、删除所有未使用镜像和悬空镜像
docker rmi $(docker images -q)
3、清理卷
如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):
删除所有未被容器引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)
4、容器清理
如果发现是容器占用过高的空间,可以手动删除一些:
删除所有已退出的容器:
docker rm -v $(docker ps -aq -f status=exited)
删除所有状态为dead的容器
docker rm -v $(docker ps -aq -f status=dead)

自动清理

docker system prune
docker system prune -a : 一并清除所有未被使用的镜像和悬空镜像。
docker system prune -f : 用以强制删除,不提示信息。

docker system prune可对空间进行自动清理。
该命令所清理的对象如下:

  • all stopped containers (已停止容器)
  • all networks not used by at least one container (未被任何容器所关联的网络)
  • all dangling images (未被任何容器使用的卷)
  • all dangling build cache (所有悬空的镜像)

已使用的镜像:指所有已被容器(包括stop的)关联的镜像,也就是docker ps -a所看到的所有容器对应的image。
未引用镜像:没有被分配或使用在容器中的镜像
悬空镜像(dangling image):未配置任何Tag(也就是无法被引用)的镜像。通常是由于镜像编译过程中未指定-t参数配置Tag导致的。

docker image prune:删除悬空的镜像。docker container prune:删除无用的容器。
- 默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
- 如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
- $ docker container prune --filter "until=24h"  docker volume prune:删除无用的卷。
docker network prune:删除无用的网络

修改docker默认的存储位置

摘自:https://blog.csdn.net/qq_35119422/article/details/85869361

docker 的所有images及相关信息存储位置为:/var/lib/docker

查看默认的docker存储路径

docker info |grep ‘Docker Root Dir’
WARNING: No swap limit support
Docker Root Dir: /var/lib/docker

停止所有docker容器

sudo docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

停止docker服务

sudo service docker stop

打包docker目录

cd /var/lib
sudo tar -czvf /usr/docker.tar.gz docker/
cd /usr/
sudo tar -xzvf docker.tar.gz

修改docker默认的存储位置

sudo vim /etc/docker/daemon.json
{“graph”: “/home/server/docker”
}

启动docker服务

sudo service docker start

启动所有docker容器

sudo docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

查看修改后docker存储路径

docker info |grep ‘Docker Root Dir’
WARNING: No swap limit support
Docker Root Dir: /usr/docker

Docker mysql 导出、导入数据

// 导出数据和表结构:
# docker exec -i mysql mysqldump -uroot -p12345678 db > db.sql
// 导出表结构:
# docker exec -i mysql mysqldump -uroot -p12345678 -d db > db.sql// 导入
# scp db.sql root@<ip地址>:/tmp/db.sql
# docker cp db.sql mysql_container:/opt/ms.sql
# docker exec -it mysql_container bash
> mysql -uroot -p12345678
> create database db;
> use db;
> source <路径>/db.sql;

[emerg] getpwnam(“www”) failed in /etc/nginx/nginx.conf

root@xxx:/home/xxx# docker logs nginx
nginx: [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:6本地解决方法:
useradd www
groupadd wwwdocker 解决方式:

其他命令


摘自:https://blog.csdn.net/qq_35119422/article/details/85869361

停止所有docker容器

sudo docker stop $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

停止docker服务

sudo service docker stop

修改mysql路径

cd ~
sudo cp -r mysql/ /home/server/

备份容器配置文件

cd /var/lib/docker/containers/de9c6501cdd3
cp hostconfig.json hostconfig.json.bak
cp config.v2.json config.v2.json.bak

修改hostconfig的冒号前的配置路径

vi hostconfig.json“Binds”: ["/home/server/mysql/conf/my.cnf:/etc/mysql/my.cnf", “/home/server/mysql/logs:/logs”, “/home/server/mysql/data:/mysql_data”],

修改config的Source的配置路径

vi config.v2.json

启动docker服务

sudo service docker start

启动所有docker容器

sudo docker start $(docker ps -a | awk ‘{ print $1}’ | tail -n +2)

docker: Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused “exec: “prom/pushgateway”: stat prom/pushgateway: no such file or directory”.

xxxx@debian:~/docker_package$ sudo docker run -d --name pushgateway -p 9091:9091 --network=prometheus_net test_pushgateway prom/pushgateway
[sudo] password for xxxx:
a6e9041545eb1208af80de45a60b1b8b627d0c51036d20dd781c968b3a7b5566
docker: Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused “exec: “prom/pushgateway”: stat prom/pushgateway: no such file or directory”.

解决方式:
因为commad 方式错误
那么进程为什么会退出?
如果是执行 service nginx start 这类启动后台服务程序的命令,那说明还是把 Docker 当做虚拟机了。Docker 启动的是进程,因此所谓的后台服务应该放到前台,比如应该 nginx -g ‘daemon off;’ 这样直接前台启动应用才对。
如果发现 COMMAND 一栏是 /bin/bash,那还是说明把 Docker 当虚拟机了。COMMAND 应该是应用程序,而不交互式操作界面,容器不需要交互式操作界面。此外,如果使用 /bin/bash 希望起一个交互式的界面,那么也必须提供给其输入和终端,因此必须加 -it 选项,比如 docker run -it ubuntu /bin/bash

那么如何查看使用的是什么commad 启动方式呢?
docker inspect <容器名称> 查看Cmd

docker ps -a
进入容器find / |grep <你看到COMMAND的部分命令>

进入容器 ps -fe ,但是我们没有成功,容器内没有ps 命令

解决问题:
查看完整输出:docker ps --no-trunc

docker ps 完整输出

关于 command 显示不全问题
显示完整输出
docker ps --no-trunc

docker: Error response from daemon: conflicting options: port publishing and the container type network mode.

See ‘docker run --help’.

xxxx@debian:~$ sudo docker run -d
–name=mysql
-p 3306:3306
–network=container:nginx
-v /home/xxxx/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=xxxxx
-e TZ=Asia/Shanghai
test_mysql
/docker-entrypoint-initdb.d
docker: Error response from daemon: conflicting options: port publishing and the container type network mode.
See ‘docker run --help’.
冲突的选项:端口发布和容器类型网络模式
解决:
删除-p 3306:3306

docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx (d639abcca455cfb2ae23110a56b08732522da0cb64146f7141ca99a8c54704b7): Error starting userland proxy: listen tcp 0.0.0.0:80: listen: address already in use.

解决:
netstat -tlnp
查看占用的端口

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决方案:
查看/etc/docker/daemon.json 这个文件中的 用 {} 括起来

运行容器之后,一直处于restarting 状态

查看日志
docker logs <容器名称>
可能存在以下问题:
1. 缺少执行文件
2. 执行文件中语法错误

docker 服务启动失败

iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT …

解决方案:

cd /etc/systemd/system/multi-user.target.wants
vim docker.service
去掉 After中 的firewalld.service


重启docker:

systemctl daemon-loaded
systemctl start docker

failed to start daemon: Error initializing network controller: Error creating default “bridge” network: could not find an available, non-overlapping

解决方案:

vim /etc/docker/daemon.json
{"ipv6": false
}

iptables no chain/target/match by that name

docker-compose up -d

之后报错 iptables no chain/target/match by that name

查看 iptables-save|grep docker 发现没有了 docker相关配置,

于是,重启docker服务 systemctl restart docker 自动生成 iptables 配置信息

再次执行

docker-compose up -d

问题解决!!!

root 进入docker 容器(加参数 -u root)

docker exec -it -u root <容器名> bash

【Docker】日常记录相关推荐

  1. 一、docker临时记录

    docker 临时记录(阿里云centos7.2.1511 ) 查看系统版本号 适用于Redhat/CentOS: [root@iz2zecm4ndtkaue32tynx5z ~]# cat /etc ...

  2. 【日常记录】解决‘GLIBC_2.34‘ not found,并且gcc制定glibc版本编译

    小荣的日常记录

  3. docker 学习记录1

    一. 1. Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

  4. 日常记录:java启动参数 -javaagent的使用,应用启动前添加代理包并且注册Mbean

    前言 有时候是不是很苦恼想在不修改别人的应用(或者统一处理所有的应用)情况下如何添加额外功能?那么-javaagent启动参数就能处理这个问题. 还有上一章讲的(日常记录:java 注册以及获取MBe ...

  5. 日常记录20210102

    日常记录20210102 记录内容 1.部分src平台的使用感受 2.今天找edu审洞的莫言问了一下cnvd通用的事 3.挖洞记录.思路 4.日常搜索语法 百度语法 谷歌语法 个人常用语法 5.lin ...

  6. augustus 软件安装与Docker使用记录

    augustus 软件安装与Docker使用记录 augustus:一基因预测软件: Docker:应用容器引擎,可实现虚拟机. 一. 问题:Github下载的augustus难以正常安装及使用 本机 ...

  7. 最新 docker 日常总结-实用宝典-先收藏

    docker 日常总结-实用宝典 问题 1. IPv4 forwarding disabled 2. Docker daemon socket权限不足 原因 解决方案 3. docker启动容器后就闪 ...

  8. 【日常记录】泰阿单兵武器库的下载与安装

    小荣的日常记录 `

  9. docker 操作记录-3

    docker操作记录ubu-16.04 [BEGIN] 2019/12/4 15:40:43 Last login: Wed Dec 4 13:56:18 2019 from 192.168.114. ...

  10. [日常记录]红绿双基色LED显示屏不同角度呈现不同颜色

    红绿双色LED显示屏不同角度呈现不同颜色 日常记录 日常记录 1.问题现象:设备使用的红绿双基色LED显示屏,在做环境试验时,当设置显示为黄色时(即红绿LED同时亮起),从温箱外部观察发现两块屏幕显示 ...

最新文章

  1. pyqt5从子目录加载qrc文件_PyQt5快速上手基础篇10-QSettings用法
  2. 程序员如何用Java排序
  3. 安装es怎么在后台运行_ES备份索引数据到阿里云OSS
  4. IBM 公开最新 Power 处理器架构
  5. python nonetype报错_python 查询数据库数据 NoneType报错
  6. 模拟地与数字地(转)
  7. Java 集合系列-第七篇-List总结
  8. java 返回进度条_Java中的命令行进度条
  9. java中的方法重载
  10. 二十四小时不插电生活方案
  11. word2vec初步使用
  12. 三层架构Bll中报错找不到可接受类型为“Lesson.DAL.StudentDal”的第一个参数的扩展方法
  13. Gamma Correction(伽马校正)
  14. Trigger与Flip-Flop两种‘触发器’的区别
  15. 《ThinkPHP 5实战》4个实战开发案例可从代码仓库下载
  16. 在巴塞罗那,华为挥别昨日 | MWC 2019 1
  17. 涂料品牌排行榜前十名有哪些?
  18. vscode tab键突然不能缩进了
  19. smartform解决越南文预览正常 打印后字符乱码
  20. 再见了仪表盘!数据该有更好的“归宿”

热门文章

  1. NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档
  2. Paper:《Hidden Technical Debt in Machine Learning Systems—机器学习系统中隐藏的技术债》翻译与解读
  3. MySQL中间件之ProxySQL(13):ProxySQL集群
  4. JavaWeb学习总结(六)—HttpServletResponse
  5. 【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解
  6. iOS 设置Label中特定的文字大小和颜色
  7. Codeforces 766E
  8. RuntimeException与CheckedException
  9. jquery,angular 对象数组的克隆和深度克隆
  10. 没用调用flush导致的数据保存丢失