zoukankan      html  css  js  c++  java
  • Docker入门2------容器container常规操作

    参考转自 https://www.cnblogs.com/jsonhc/p/7760144.html

    Docker的container

    • 运行一个container的本身就是开启一个具有独立namespace的进程
    • 进程有自己的网络,文件系统等
    • docker通过run命令来启动一个container
    • 运行一个container必须要指定一个image作为初始化的文件系统

    对于不存在的image,docker会自动去registry里面下载对应的image,然后再运行container

    • docker正在运行的容器
    • 物理机上的进程:

      可以看到二者的uuid是相同的

    如果image里面包含了CMD的命令,那么在启动container的时候,不需要指定command,否则会使用指定的command来覆盖image中的CMD

    • 比如tomcat镜像里面的命令自动是执行catalina.sh run ,启动容器就会自动启动tomcat,如果启动的时候指定了命令就会覆盖原始的,导致tomcat不能启动!
    • 正常启动 docker run -d -p 8088:8080 tomcat 进程如下:
    [root@localhost ymsk]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                    NAMES
    6a2a64495275        tomcat              "catalina.sh run"   10 minutes ago      Up 10 minutes                 0.0.0.0:8088->8080/tcp   elated_shockley
    

    会自动启动tomcat服务

    • 覆盖启动'docker run -p 8088:8080 -t -i tomcat /bin/bash' 进程如下:
    [root@localhost ymsk]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS                    NAMES
    839498ec771b        tomcat              "/bin/bash"         12 minutes ago      Exited (130) 10 minutes ago                            peaceful_liskov
    

    不会自动启动tomcat服务

    前台运行和后台运行:

    • 默认的container是在前台运行的,会绑定command进程的STDIN、STDOUT、STDERR到console上(在console上展现标准输入、输出和标准错误输出)

    • 可以通过-d的选项让container运行在后台

    • 通过attach命令可以重新attach一个后台运行的container(attach可以将后台运行的切换到前台)

    • 在后台运行的情况下,RUN命令会返回一个容器的uuid,唯一标识container

    • 可以通过docker ps来查看container的uuid和运行信息

    • 可以通过指定--name的方式来指定container的名字,name必须唯一

    • inspect:可以查看container的更多信息
       - 通过docker inspect {container_id}来获取container的更多的信息,包括网络,volume,实际在host上的进程id等信息

    • log

      • 通过logs命令可以看到container中command所指向进程的STDOUT,STDERR数据
      • 可以进程排错(-d后台运行没有输出到console时,查看)
    • 环境变量:
        通过-e参数,可以在运行container的时候添加系统环境变量

    • 端口

      • 通过-p 8000:80 -p 443:443:映射容器中的多个端口(前面本机host端口,后面container端口)
    • 网络设置:

      • 通过--net参数来修改container的网络设置,默认是bridge的方式
      • none表示关闭container的网路连接
      • host表示使用主机的网络栈,这个时候host主机不会创建veth虚拟网卡映射到container
      • container的网络和主机host的网络在同一网段
        # docker run -t --net host saltstack/ubuntu-14.04 sh -c "while true;do ifconfig;sleep 2;done"
    • DNS

      • 通过--dns设置
    • 磁盘挂载

      • 通过-v指定一个容器内目录,他会映射到物理机磁盘一个目录下,可以在docker inspect ID里面看到
    root@webserver:/usr/local/tomcat# 
    
         -v: 为container绑定一个数据卷
         -i:交互模式,直接进入到container容器中
      -t:tty,伪终端
      -h wadeson:指定为container设置hostname
      -v /data:container内的/data为挂载点
    
    • 查看磁盘映射挂载docker inspect 9ea82dc78b50
     {"Mounts": [
                {
                    "Type": "volume",
                    "Name": "b7f9ca8cb9da67a88e36724c04d68ed8bea8ab1171a3051bf9c1cf00204ae31a",
                    "Source": "/var/lib/docker/volumes/b7f9ca8cb9da67a88e36724c04d68ed8bea8ab1171a3051bf9c1cf00204ae31a/_data",
                    "Destination": "/data",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
            ]
    }
    
    • 磁盘映射:
      • 把容器/data目录映射到物理机 /main:/data目录,无论容器还是外部物理机,任意一个地方修改文件,另外一方都是可见的.
    [root@localhost main]# docker run -p 8088:8080 -it -v /main:/data -h webserver tomcat /bin/bash
    root@webserver:/usr/local/tomcat# cd /data/
    root@webserver:/data# ls -l
    total 0
    drwxr-xr-x. 3 1000 1000 34 Feb 21 06:40 apps
    drwxr-xr-x. 3 root root 25 Nov 23 01:59 server
    drwxr-xr-x. 2 root root 74 Nov 23 02:00 soft
    

    还有更多操作可以修改网络模式,设置挂载只读等等,用的时候再查吧

  • 相关阅读:
    Silverlight入门:第四部分 数据绑定
    [Silverlight入门系列]使用MVVM模式(6):使用Behavior
    Silverlight入门:第二部分 定义界面布局和导航
    [Silverlight入门系列]使用MVVM模式(2):集合Model /ObservableCollection/ICollectionView
    建立可扩展的silverlight应用框架 step5:整理Module
    Silverlight入门:第六部分 美化用户界面的样式与模板
    [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
    Silverlight WCF RIA服务(五)使用SL商业应用模板
    Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
    Asymptote 学习记录(3) 画赵爽弦图练习
  • 原文地址:https://www.cnblogs.com/radio/p/10412920.html
Copyright © 2011-2022 走看看