目录

命令分类

Docker基础知识梳理

常用技巧

  • 查看容器ip地址

    docker inspect --format '{{ .NetworkSettings.IPAddress }}' nginx-test
    
  • 创建一个nginx容器

    docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/nginx/:/etc/nginx -v /var/www/html:/var/www/html -v /var/log/nginx:/var/log/nginx nginx
    
  • 进入容器并修改文件

    jm@ubuntu:/tmp$ sudo docker exec -it 1498f0ea59f8 /bin/bash
    bash-4.4# ls
    atlassian-synchrony.log    index                      logs                       plugins-temp               synchrony-standalone.jar
    bundled-plugins            journal                    plugins-cache              shared-home                temp
    confluence.cfg.xml         lock                       plugins-osgi-cache         synchrony-args.properties  webresource-temp
    bash-4.4# vim confluence.cfg.xml 
    bash: vim: command not found
    bash-4.4# vi confluence.cfg.xml 
    
  • 查看镜像构建过程

    docker history --help
    Usage:  docker history [OPTIONS] IMAGE
    Show the history of an image
    Options:
        --format string   Pretty-print images using a Go template
        --help            Print usage
    -H, --human           Print sizes and dates in human readable format (default true)
        --no-trunc        Don't truncate output
    -q, --quiet           Only show numeric IDs
    
    

    示例

    sudo docker history phpdockerio/php72-fpm:latest --no-trunc |grep systemd
    
    
  • 主机与容器之间数据拷贝

    将主机/www/html目录拷贝到容器96f7f14e99ab的/html目录下。

    docker cp /www/html 96f7f14e99ab:/html/
    

    目标地址和源地址可以反过来,即从容器复制到主机中

  • 查看容器日志

    docker logs container-id/container-name
    
  • 容器不能连接外网

    比如在容器内连接远程地址失败,unknown host之类的错误,ping不通外网等。

    解决:stop所有容器,并重启docker服务,再start需要的容器(大概率解决方案)

    service docker restart
    
  • 巧用镜像复用

    深刻理解Docker镜像大小_木精灵的技术博客-CSDN博客

  • 容器间的link互通

    Docker容器间的link和端口映射_风一样的男人的博客-CSDN博客_docker link

    零基础docker学习笔记9:docker –link - 知乎

    docker run -d --name container2 --link container1:c1 ....
    

    相当于在container2中做了个container1的链接(快捷访问方式c1),相当于在container2中的/etc/hosts中注册了一个主机名c1指向container1。

    还有个很适当的类比:nginx配置中的负载均衡配置器upstream的名字,比如以下的yar.rpc:

    upstream yar.rpc {
        server 192.168.8.130:8091;
        server 192.168.8.130:8092;
    }
    ...
    
    location /{
            proxy_pass        http://yar.rpc;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    
    
    
  • 查看容器ip

    # 查看所有容器实际分配的IP地址
    sudo docker network inspect bridge
    # 查看指定容器
    sudo docker inspect mysql03 |grep IP
    

@continue

参考

https://www.runoob.com/docker/docker-command-manual.html

http://study.p2hp.com/docker/docker-command-manual.html