zoukankan      html  css  js  c++  java
  • docker学习笔记

    docker ps -a 查看当前系统中容器的列表
    docker ps命令,只能看到正在运行的容器,如果指定-a,命令会列出所有容器,包括运行和停止的,-l标志,会列出最后一次运行的容器。
    docker run -i -t  容器/镜像名  运行容器
    -i:标志保证容器中stdin是开启的。
    -t:为要创建的容器分配一个伪终端
    容器器内
    cat /etc/hosts 查看容器网络配置
    #ip a 查看ip地址
    root@7ff751e1bade:/# ps -aux
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.1  18184  2072 ?        Ss   06:10   0:00 /bin/bash
    root         18  0.0  0.1  34364  1556 ?        R+   06:22   0:00 ps -aux
    yum install vim
    root@7ff751e1bade:/# apt-get update && apt-get install vim
    exit退出
    docker ps 命令查看运行的容器
    docker ps -a 命令查看当前系统中容器的列表。
    docker ps -l列出最后一次运行的容器
     
    --name为容器指定一个名称
    docker run --name bob_the_container -i -t ubuntu /bin/bash
     
    重新启动已经停止的容器:
    docker start bob_the_container
    docker start aa3f365f0f4e
     
    3.6 附着到容器上
    docker attach命令:
    docker attach bob_the_container
    docker attach aa3f365f0f4e
    [root@docker ~]# docker attach zabbix_container
     
     
    创建守护式容器:
    [root@testzabbix ~]# docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 1; dond"
    8cd580475b1a7f67db4fff1dd83d0607578b584ff0f4ea1ff2d5e341aaf7a24d
    [root@testzabbix ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    4fcce3d2c8e9        centos              "/bin/sh -c 'while tr"   9 seconds ago       Up 5 seconds                            dreamy_varahamihira
     
    容器内部都在干些什么
    docker logs 
    [root@testzabbix ~]# docker logs dreamy_varahamihira
    hello world
    hello world
    hello world
    hello world
    hello world
    hello world
    -f参数类似tail -f
    docker logs -f ....
    --tail 10 
    --tail 0 -f
    -t加时间戳
    docker logs -ft ....
     
    3.9查看容器内进程:
    docker top 
    [root@testzabbix ~]# docker top dreamy_varahamihira
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                15271               56038               0                   14:23               ?                   00:00:00            /bin/sh -c while true;do echo hello world;sleep 1; done
     
    3.10 在容器内部运行进程
    exec在容器内部启动新进程
    [root@docker ~]# docker start zabbix_container
    zabbix_container
    [root@docker ~]# docker exec -d zabbix_container touch /etc/new_config_file
    [root@docker ~]# 
     
    3.11停止守护式容器:
    [root@docker ~]# docker stop ubuntu
    ubuntu
     
    3.12 自动重启容器:--restart
     
    3.13 深入容器:docker inspect
    [root@docker ~]# docker inspect zabbix_container
    用-f或者--format标志来选定查看结果:
    [root@docker ~]# docker inspect --format='{{.State.Running}}' ubuntu
    false
    获取IP地址
    [root@docker ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' ubuntu
     
    3.14删除容器:
    docker rm
    删除全部容器:
    docker rm `docker ps -a -q`
     
    4.使用docker镜像和仓库
    [root@docker ~]# docker run -i -t --name another_container_mum ubuntu /bin/bash
    启动一个新的名字为another_container_mum的容器,这个容器基于ubuntu镜像并且会启动bash shell
     
    4.1
    镜像保存在宿主机的/var/lib/docker目录下。
     
    ubuntu:12.03可以使用冒号加标签指定镜像。
     
    [root@docker ~]# docker run -t -i --name new_container ubuntu:latest /bin/bash
     
    4.3拉取镜像
    docker pull fedora  默认下载lasted
    docker images fedora
     
    4.4查找镜像
    [root@docker ~]# docker search puppet
    NAME                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    macadmins/puppetmaster              Simple puppetmaster based on CentOS 6           23                   [OK]
    devopsil/puppet                     Dockerfile for a container with puppet ins...   20                   [OK]
    macadmins/munki-puppet              Basic munki nginx image with Puppet used f...   7                    [OK]
    。。。
     
    4.5构建镜像
    docker commit 不推荐使用,应该使用更灵活、更强大的dockerfile来构建镜像。
    docker build
    dockerfile
    4.5.2用docker的commit命令创建镜像
    [root@docker ~]# docker run -i -t ubuntu /bin/bash
    root@eb366887a548:/# apt-get -yqq update
    root@eb366887a548:/# apt-get -y install apache2
    [root@docker ~]# docker commit eb366887a548 jamtur01/apache2
    4ff6b633df04c2dc65e59623982ddeb85b2fe09c0780b44df91658788074b179
    [root@docker ~]# docker ps -l -q      #查看新提交的镜像id
    eb366887a548
    [root@docker ~]# docker images
    REPOSITORY                                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    jamtur01/apache2                            latest              4ff6b633df04        49 seconds ago      265.4 MB
    monitoringartist/zabbix-3.0-xxl             latest              889e37e6ae58        5 days ago          818.1 MB
    提交的只是更新
    可以在提交时,指定更多的数据(包括标签)来描述修改
    [root@docker ~]# docker commit -m="A new custom image" --author="James Turnbull" eb366887a548 jamtur01/apache2:webserver
    jamtur01/apache2    latest              4ff6b633df04        7 minutes ago       265.4 MB
    [root@docker ~]# docker images
    REPOSITORY                                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    jamtur01/apache2                            webserver           31c6572a159d        33 seconds ago      265.4 MB
    jamtur01/apache2                            latest              4ff6b633df04        8 minutes ago       265.4 MB
    [root@docker ~]# docker inspect jamtur01/apache2:webserver 查看镜像详细信息
     
    4.5.3用dockerfile构建镜像
    [root@docker ~]# mkdir static_web
    [root@docker ~]# cd static_web/      #用来保存dockerfile,此目录是我们的构建环境,docker称为上下文或构建上下文
    [root@docker static_web]# touch Dockerfile 
    [root@docker static_web]# vim Dockerfile
    #Version:0.0.1
    FROM ubuntu:latest
    MAINTAINER James Turnbull "james@example.com"
    RUN apt-get update
    RUN apt-get install -y nginx
    RUN echo 'Hi,I am your container' 
        >/usr/share/nginx/html/index.html
    EXPOSE 80 
     
    4.5.4基于Dockerfile构建新镜像 
    #构建名字为jamtur01/static_web的镜像,“."代表上本地目录找Dockerfile文件,也可以指定git仓库的源地址
    [root@docker static_web]# docker build -t="jamtur01/static_web" .
    #事标签
    [root@docker static_web]# docker build -t="jamtur01/static_web:v1" . 
    #git仓库地址:
    [root@docker static_web]# docker build -t="jamtur01/static_web:v1" git@github.com:jamtur01/docker-static_web
     
    [root@docker static_web]# docker images
    REPOSITORY                                  TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
    jamtur01/static_web                         latest              b26970c43567        About a minute ago   223.1 MB
    4.5.5指令失败时会怎样
    doker run命令来基于这次构建到目前为止已经成功的最后一步创建一个容器。
    如:docker run -t -i 997485f46ec4 /bin/bash
     
    4.5.6 dockerfile和构建缓存
    docker build --no-cache标志
     
    4.5.7 基于构建缓存的Dockerfile模板
    4.5.8 查看新镜像
    深入探求镜像是如何构建的,使用docker history命令
    [root@docker static_web]# docker history  b26970c43567
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    b26970c43567        6 minutes ago       /bin/sh -c #(nop) EXPOSE 80/tcp                 0 B                 
    5c263b4c07ca        7 minutes ago       /bin/sh -c echo 'Hi,I am your container'        23 B                
    a8ebe37e8ab4        7 minutes ago       /bin/sh -c apt-get install -y nginx             56.81 MB            
    9662e7183b93        12 minutes ago      /bin/sh -c apt-get update                       39.19 MB            
    d65eef9b1448        18 minutes ago      /bin/sh -c #(nop) MAINTAINER James Turnbull "   0 B                 
    56465e1e45d2        2 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
    c53777cbfc31        2 weeks ago         /bin/sh -c mkdir -p /run/systemd && echo 'doc   7 B                 
    6ed49a73d8f0        2 weeks ago         /bin/sh -c sed -i 's/^#s*(deb.*universe)$/   1.895 kB            
    6571ba684f54        2 weeks ago         /bin/sh -c rm -rf /var/lib/apt/lists/*          0 B                 
    25810b66099e        2 weeks ago         /bin/sh -c set -xe                                                  && echo '#!/bin/sh' > /u   745 B               
    58488e45273c        2 weeks ago         /bin/sh -c #(nop) ADD file:b1cd0e54ba28cb1d6d   127.1 MB  
     
    4.5.9 从新镜像启动容器:
    [root@docker static_web]# docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"
    -p可以灵活映射,如:
    docker run -d -p 80:80 --name static_web jamtur01/static_web nginx -g "daemon off;"
    9734c6c26b19bc3f5ea241b2317bb992bd113131096102c1d5c171b2bde4708a
    查看容器端口分配情况:
    CONTAINER ID        IMAGE                 COMMAND                CREATED              STATUS              PORTS                   NAMES
    9734c6c26b19        jamtur01/static_web   "nginx -g 'daemon of   About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp   static_web 
    宿主机的32768映射到容器的80端口     
    也可以使用docker port命令:
    [root@docker static_web]# docker port 9734c6c26b19
    80/tcp -> 0.0.0.0:32768  
    http://10.2.0.193:32768/ 可以打开nginx
     
    4.5.10 dockerfile其他指令
    1.cmd :指定窗口被启动时要运行的命令
    2.ENTRYPOINT
    3.WORKDIR:用来在从镜像创建一个容器时,在容器内部设置一个工作目录,ENTTRYPOINT或CMD指定的程序会在这个目录下执行。
    4.ENV,用来在镜像构建过程中设置环境变量
       也可以使用docker run命令的-e标志来传递环境变量。
    5.USER :用于指定该镜像会以什么用户运行。
    6.VOLUME:用来向基于镜像创建的容器添加卷。可以存在于一个或者多个容器内的特定目录。
    7.ADD:用来将构建环境下的文件和目录复制到镜像中。
    8.COPY
    9.ONBUILD:为镜像添加触发器
     
    4.6将镜像推送到Docker Hub
    docker push jamtur01/static_web
    自动构建:
     
    4.7删除镜像
    [root@docker ~]# docker rmi  4ff6b633df04
     
    4.8运行自己的docker registry
    4.8.1从容器运行registry
    [root@docker ~]# docker run -p 5000:5000 registry
    创建一个运行registry的容器,绑定到5000端口
    4.8.2测试新Registry
     
    4.9其他可选Registry服务
     
    5.在测试中使用Docker
    搭建ningx测试环境
    [root@docker ~]# mkdir sample
    [root@docker ~]# cd sample
    [root@docker sample]# touch Dockerfile
    [root@docker sample]# mkdir nginx && cd nginx
    [root@docker sample]# docker build -t jamtur01/nginx .
    5.1.3从Sample网站和Nginx镜像构建容器
    [root@docker sample]# mkdir website && cd website
    [root@docker website]# docker run -d -p 80 --name website -v $PWD/website:/var/www/html/website jamtur01/nginx nginx
    -v 允许我们将宿主机的目录作为卷,挂载到容器里。
     
    5.2使用docker构建并测试web应用程序
     
    5.2.3构建redis镜像和容器:
     
    5.2.4连接到redis容器
    [root@docker website]# ip a show docker0
    3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
        link/ether 06:29:16:c5:e6:5d brd ff:ff:ff:ff:ff:ff
        inet 172.17.42.1/16 scope global docker0
        inet6 fe80::a4cf:aff:fef2:784c/64 scope link 
           valid_lft forever preferred_lft forever
     
     
     
     
    113页
  • 相关阅读:
    版本管理系统:svn和git
    Java学习笔记七 常用API对象三
    Java学习笔记六 常用API对象二
    Java学习笔记五 常用API对象一
    Java学习笔记三.3
    Java学习笔记三.2
    Java学习笔记三
    析构函数总结
    C++之类的构造函数,不得不学明白的重点
    C++拷贝构造函数(深拷贝,浅拷贝)
  • 原文地址:https://www.cnblogs.com/ld1977/p/6030447.html
Copyright © 2011-2022 走看看