zoukankan      html  css  js  c++  java
  • Docker-容器操作

    1.1 查看容器

    1、查看最后一次运行的容器

    docker ps -l
    

    2、查看运行容器

    docker ps
    

    3、查看所有容器

    docker ps -a
    

    4、进入容器,其中字符串为容器ID

    docker exec -it ecc704d85084 /bin/bash
    

    5、停用全部运行中的容器

    docker stop $(docker ps -q)
    

    6、删除全部容器

    docker rm $(docker ps -aq)
    

    7、一条命令实现停用并删除容器

    docker stop $(docker ps -q) & docker rm $(docker ps -aq)
    

    8、查看容器的ip地址

    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器ID
    

    1.2 创建容器

    1、创建容器命令:docker run

    案例说明: docker run -di --name myredis2 -p 6666:6379 redis

     -i:表示运行容器
     -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    --name :为创建的容器命名。
    -v:表示目录映射关系(前者是宿主机目录,后者是映射到容器上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
    

    2、交互式方式创建容器(创建以后就进入到容器内部了)

    基本语法: docker run -it --name=容器名称 镜像名称:标签 /bin/bash

    通过ps命令查看,发现可以看到启动的容器,状态为启动状态
    

    3、守护式方式创建容器

    基本语法: docker run -di --name=容器名称 镜像名称:标签

    登录守护式容器方式:
    docker exec -it 容器名称 (或者容器ID)  /bin/bash
    

    1.3 启动、停止、删除容器

    1、停止容器

    docker stop 容器名称(或者容器ID)
    docker stop 容器名称(或者容器ID),容器名称(或者容器ID)
    

    2、重启容器

    docker restart 容器名称(或者容器ID)
    docker restart 容器名称(或者容器ID),容器名称(或者容器ID)
    

    3、启动容器

    docker start 容器名称(或者容器ID)  
    docker start 容器名称(或者容器ID)容器名称(或者容器ID)
    

    注意事项: 出现如下类似错误

    COMMAND_FAILED: '/sbin/iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 8111 -j DNAT --to-destination 172.17.0.6:8111 ! -i docker0' failed: iptables: No chain/target/match by that name.
    

    如果启动容器出错,把网卡重新设置如下:

    pkill docker
    
    iptables -t nat -F
    
    ifconfig docker0 down
    
    brctl delbr docker0
    
    systemctl start docker 
    
    -- 重启docker后解决
    

    4、删除容器

    注意事项: 如果删除一个容器,必须这个容器是停止状态,然后删除,也就说你无法删除一个运行中的容器。

    docker rm 容器名称(或者容器ID)
    docker rm 容器名称(或者容器ID) 容器名称(或者容器ID)
    docker rm -f $(docker ps -aq) # 删除所有的容器
    docker ps -a -q|xargs docker rm #删除所有的容器
    

    1.4 退出容器

    exit #直接容器停止并且退出
    Ctrl + p + Q #容器不停止退出
    

    1.5 查询启动日志

    docker logs -f -t --tail 容器id(容器名字)
    # 显示日志
    -tf #显示日志
    --tail number #要显示日志条数
    

    1.6 查询进程信息

    # 基本命令
    docker top 容器id
    

    1.7 查看容器元数据

    # 命令
    docker inspect 容器id
    

    查看结果

    # 测试
    [root@Linux ~]# docker inspect 76add8b5c428
    [
        {
        	# 完整的id,有意思啊,这里上面的容器id,就是截取的这个id前几位!
            "Id": "76add8b5c428721e78f270f1cb963e50d170d891da8631965602279fbf868a1b",
            "Created": "2021-06-07T02:46:39.211261839Z",
            "Path": "docker-entrypoint.sh",
            "Args": [
                "redis-server",
                "/usr/local/etc/redis/redis.conf"
            ],
            # 状态
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 4680,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2021-06-07T02:46:40.188362039Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
           // ...........
    ]
    

    1.8 进入正在运行的容器

    方式一: docker exec -it 容器id bashShell

    docker exec -it 76add8b5c428 /bin/bash
    

    方式二:docker attach 容器id

    docker attach 76add8b5c428
    

    两种方式区别:

    exec 是在容器中打开新的终端,并且可以启动新的进程。

    attach 直接进入容器启动命令的终端,不会启动新的进程。

    1.9 拷贝文件

    1、从容器内拷贝文件到主机上: docker cp 容器id:容器内路径 目的主机路径

    ## 进入docker容器内部
    [root@Linux ~]# docker exec -it c219f694d74d /bin/bash
    [root@c219f694d74d /]# ls
    anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
    bin                etc  lib   media  opt  root  sbin  sys  usr
    [root@c219f694d74d /]# cd /home/
    [root@c219f694d74d home]# ls
    # 在容器内创建一个文件
    spring.java
    [root@c219f694d74d home]# exit
    exit
    # 将这文件拷贝出到主机上
    [root@Linux ~]# docker cp c219f694d74d:/home/spring.java /home
    [root@Linux ~]# cd /home/
    [root@Linux home]# ls
    abc.log  abc.txt  guardwhy  james  Java  mycal  my.sh  spring.java
    [root@Linux home]# 
    

    1.10 可视化窗口

    1、Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。如果仅有一个docker宿主机,则可使用单机版运行,Portainer单机版运行十分简单,只需要一条语句即可启动容器,来管理该机器上的docker镜像、容器等数据。

    docker run -d -p 8088:9000 
    --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
    


    2、开启8088:9000端口,打开防火墙。

    firewall-cmd --zone=public --add-port=8000/tcp --permanent
    firewall-cmd --zone=public --add-port=9000/tcp --permanent
    firewall-cmd --reload
    

    3、查看所有开启的端口

    firewall-cmd --list-ports
    

    4、访问方式: http://192.168.50.128:8088/

    5、首次登陆需要注册用户,给guardwhy用户设置密码。

    6、单机版这里选择local即可,选择完毕,点击Connect即可连接到本地docker

    7、登录成功,查看结果!!!

  • 相关阅读:
    《Orange'S:一个操作系统的实现》与上一版之比较
    IPC
    末日帝国——Agile公司的困境 (2)
    取经学道真经验——你听过这么享受的培训吗
    数据库设计指南(五)数据库小技巧
    软件项目开发典型风险一览
    数据库设计指南(四)保证数据的完整性
    官网的Ext direct包中.NET版的问题
    软件项目开发应写的13类文档
    面试EJB常考题
  • 原文地址:https://www.cnblogs.com/Guard9/p/14906562.html
Copyright © 2011-2022 走看看