zoukankan      html  css  js  c++  java
  • docker常用命令问题汇总

    Docker简介

    docker可以用来创建虚拟环境跑应用,各个应用能起到隔离作用。

    使用方法也很简单,就是获取镜像,使用镜像,配置镜像,对应的应用就能快速跑起来了

    以httpd为例

    1.搜索镜像  docker search httpd

    2.获取镜像  docker pull httpd  

    3.运行镜像  docker run --name httpdtest -p 80:80 httpd #--name起名字方便识别。-p 80:80 容器端口:宿主机映射端口,可选。

    4.容器状态  docker ps(运行中的容器)或docker ps -a(所有状态的容器)

     5.进入容器  docker exec -it 容器id bash  #通过bash进入容器,容器id可通过docker ps获取

     6.删除镜像  docker rmi 镜像id

    7.重启容器  docker restart 容器id

    8.文件复制  docker cp 容器id:/容器文件目录 /宿主机目录   #将容器内部的文件复制到宿主机目录下

           docker cp /宿主机目录  容器id:/容器文件目录  #将宿主机目录内容复制到容器内部目录

    9.系统镜像  docker run -d -it --name centos7 centos /bin/bash  #运行centos镜像,-d后台运行,-it互动终端方式,/bin/bash启动bash否则会自动终止该centos容器

    10.指定版本  docker pull centos:7  #可以通过:后指定版本,例如默认centos的版本为8,我们可以这样指定为7的版本

    11.容器文件持久化

    容器有一个比较麻烦的地方,就是每次重启之后会导致容器内的文件重置为初始化状态。所以我们还需要对容器内的文件进行持久化配置

    持久化配置有两种方法

    方法一:直接复制。如docker cp 容器id:/etc/prometheus /zhao   #将容器内部的文件复制到宿主机的/zhao文件夹下

    方法二:docker run --name myprometheus -v /zhao/prometheus:/etc/prometheus -d 镜像id  #其中-v是指映射逻辑卷的意思,将宿主机上的/zhao/prometheus里的文件和文件夹复制到容器的/etc/prometheus里。-d是指后台运行

     问题汇总:

    1.问题描述:容器已启动,但是docker ps没有显示

    解决方法:docker ps -a查看全部docker应用

    补充说明:如有运行异常的,使用stop是停止不了的,需要使用docker rm 加上containerID才行。这个rm我还不确定,建议谨慎操作

    2.问题描述:提示httpd: Could not reliably determine the server's fully qualified domain name

    解决方法:find / -name httpd.conf然后查找ServerName,把改参数值改为 localhost:80,然后重启docker的httpd

    补充说明;注意端口不要被占用了

    3.问题描述:编辑文件时,发现没有vim命令,也无法yum安装,因为yum命令也没有。

    解决方法:(并不是通用的,只是部分容器可行):

    进入容器内部,执行以下命令:

    apt-get update
    apt-get install vim

    4.问题描述:容器开启后,外部无法正常访问服务,但是宿主机测试该服务是正常的

    可能原因:Linux内核限制了网络转发导致  

    解决方法:sysctl -w net.ipv4.ip_forward=1  #允许ipv4转发

  • 相关阅读:
    [Go] 解决packets.go:36: read tcp 127.0.0.1:51139->127.0.0.1:3306: wsarecv: An established connection was aborted by the software in your host ma chine.
    [javascript] js格式化时间为xx秒前、xx分钟前、xx小时前等
    [日常]UserAgent中的AhrefsBot解释
    [PHP] laravel 框架多项目公用redis会有默认前缀 项目名_database_key
    [Go] go run 时 os.Getwd 和 os.Executable 获取程序根路径
    [laravel] 关闭laravel数据库model维护create_at update_at
    [Go]go.mod 文件中的// indirect意思代表间接依赖
    [Go] 解决 imported from implicitly required module
    [mysql] 解决SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column
    [PHP] windows环境下PHP增加rdkafka扩展 解决需要ext-rdkafka问题
  • 原文地址:https://www.cnblogs.com/biaopei/p/10302470.html
Copyright © 2011-2022 走看看