zoukankan      html  css  js  c++  java
  • docker基础学习

    1、docker安装

    #yum -y install docker-ce

    修改selinux的状态

    #vim /etc/selinux/config
    将selinux改为disabled  

    重启

    2、启动docker服务

    #systemctl start docke
    

    3、寻找centos镜像

    #docker search centos
    

    4、拉取centos镜像

    #docker pull centos
    

    5、查看docker镜像

    #docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
    

    6、运行个应用程序

    #docker run centos /bin/echo 'Hello world'
    Hello world
    

    7、查看容器运行的情况

    #docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
    f65576fa690b        centos              "/bin/echo 'Hello ..."   2 minutes ago       Exited (0) 2 minutes ago                       optimistic_allen
    

    8、建个centos容器并进行交互(-it 进行交互 --name 指定容器名字)

    #docker run --name mydocker -it centos /bin/bash
    [root@a5b47cb38807 /]# ls /
    anaconda-post.log  etc   lib64  opt   run   sys  var
    bin                home  media  proc  sbin  tmp
    dev                lib   mnt    root  srv   usr
    [root@a5b47cb38807 /]# ps aux
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  0.0  0.1  11824  1904 ?        Ss   07:36   0:00 /bin/bash
    root         14  0.0  0.0  51712  1708 ?        R+   07:37   0:00 ps aux
    root@a5b47cb38807 /]# cd /tmp
    [root@a5b47cb38807 tmp]# ls
    ks-script-7RxiSx  yum.log
    [root@a5b47cb38807 tmp]# mkdir hehe
    [root@a5b47cb38807 tmp]# ls
    hehe  ks-script-7RxiSx  yum.log
    [root@a5b47cb38807 ~]# exit
    exit
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
    a5b47cb38807        centos              "/bin/bash"              4 minutes ago       Exited (127) 5 seconds ago                       mydocker
    f65576fa690b        centos              "/bin/echo 'Hello ..."   10 minutes ago      Exited (0) 10 minutes ago                        optimistic_allen
    

    9、交互方式一退出就应用程序就不继续运行

    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
    a5b47cb38807        centos              "/bin/bash"              4 minutes ago       Exited (127) 5 seconds ago                       mydocker
    f65576fa690b        centos              "/bin/echo 'Hello ..."   10 minutes ago      Exited (0) 10 minutes ago                        optimistic_allen
    [root@localhost ~]# docker start f65576fa690b
    f65576fa690b
    [root@localhost ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
    a5b47cb38807        centos              "/bin/bash"              5 minutes ago       Exited (127) About a minute ago                       mydocker
    f65576fa690b        centos              "/bin/echo 'Hello ..."   11 minutes ago      Exited (0) 10 seconds ago                             optimistic_allen
    [root@localhost ~]# docker run -d --name mydocker1 centos
    c36ecd4ad9f8a453d2910139f0ba9e72fe8dae192f61083af699ba4786316d7f
    

    10、运行个nginx应用程序

    [root@localhost ~]# docker run -d --name mynginx nginx
    Unable to find image 'nginx:latest' locally
    Trying to pull repository docker.io/library/nginx ... 
    latest: Pulling from docker.io/library/nginx
    a5a6f2f73cd8: Pull complete 
    67da5fbcb7a0: Pull complete 
    e82455fa5628: Pull complete 
    Digest: sha256:31b8e90a349d1fce7621f5a5a08e4fc519b634f7d3feb09d53fac9b12aa4d991
    Status: Downloaded newer image for docker.io/nginx:latest
    acc79954bda33943472a1d49eb98561260e5643b002e8918e18ad364cb2d9165
    [root@localhost ~]# docker ps -a | grep nginx
    acc79954bda3        nginx               "nginx -g 'daemon ..."   38 seconds ago      Up 36 seconds                80/tcp              mynginx
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    acc79954bda3        nginx               "nginx -g 'daemon ..."   5 minutes ago       Up 5 minutes        80/tcp              mynginx
    [root@localhost ~]# docker attach acc79954bda3
    ^C[root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
    acc79954bda3        nginx               "nginx -g 'daemon ..."   7 minutes ago       Exited (0) 2 seconds ago                       mynginx
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
    acc79954bda3        nginx               "nginx -g 'daemon ..."   9 minutes ago       Exited (0) 2 minutes ago                       mynginx
    [root@localhost ~]# docker start acc79954bda3
    acc79954bda3
    

    11、获取容器的pid,并用nsenter进入nginx容器

    [root@localhost ~]# docker inspect --format "{{.State.Pid}}" mynginx
    6307
    [root@localhost ~]# nsenter --target 6307 --mount --uts --ipc --net --pid
    mesg: ttyname failed: No such file or directory
    root@acc79954bda3:/# cd /etc/nginx/
    root@acc79954bda3:/etc/nginx# cat nginx.conf
    

    12、创建个进入容器的脚本

    [root@localhost ~]# cat in.sh 
    #/bin/bash
    CNAME=$1
    CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
    nsenter --target "$CPID" --mount --uts --ipc --net --pid
    [root@localhost ~]# ./in.sh mynginx
    root@acc79954bda3:/# 
    

    13、随机个容器映射个端口

    [root@localhost ~]# docker run -d -P --name mynginx1 nginx
    6edc7407e39f3d65dffa1103c6d3bc2cc6c362351f7db661b8bc50c7cc980f1d
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
    6edc7407e39f        nginx               "nginx -g 'daemon ..."   9 seconds ago       Up 8 seconds        0.0.0.0:32768->80/tcp   mynginx1
    

    14、指定端口映射

    [root@localhost ~]# docker run -d -p 91:80 --name mynginx2 nginx
    2d2e6c24a9bdf03f6b91816f46f63014d09c71c383a4a219c9f352407db59d7b
    

    15、挂载本地目录 -v

    [root@localhost ~]# docker run -it --name volume-test1 -h nginx -v /data centos
    

    16、用inspect找到主机的存储位置,{.Volumes}报错用{.Config.Volumes}

    [root@localhost ~]# docker inspect -f {{.Volumes}} volume-test1
    
    Template parsing error: template: :1:2: executing "" at <.Volumes>: map has no entry for key "Volumes"
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    7a5555a106f9        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            volume-test1
    [root@localhost ~]# docker inspect -f {{.Config.Volumes}} volume-test1
    map[/data:{}]
    [root@localhost ~]# docker inspect volume-test1 | grep Mounts -A 10
            "Mounts": [
                {
                    "Type": "volume",
                    "Name": "158f7012d0bf8c4a3579b2edc99f1777a301666c34d5e72fbec8875940055f52",
                    "Source": "/var/lib/docker/volumes/158f7012d0bf8c4a3579b2edc99f1777a301666c34d5e72fbec8875940055f52/_data",
                    "Destination": "/data",
                    "Driver": "local",
                    "Mode": "",
                    "RW": true,
                    "Propagation": ""
                }
    

    17、把本地目录挂载到容器内

    [root@localhost ~]# docker run -it --name volume-test2 -h nginx -v /opt:/opt centos
    [root@nginx /]# ls
    anaconda-post.log  etc   lib64  opt   run   sys  var
    bin                home  media  proc  sbin  tmp
    dev                lib   mnt    root  srv   usr
    [root@nginx /]# cd opt/
    [root@nginx opt]# ls
    rh
    [root@nginx opt]# cd rh/
    [root@nginx rh]# ls
    

    18、挂载文件到容器内

    [root@localhost ~]# docker run -it --name volume-tenginx -v /etc/hosts:/etc/hosts centos
    [root@nginx /]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhoalhost4.localdomain4
    ::1         localhost localhost.localdomain localhoalhost6.localdomain6
    [root@nginx /]# 
    

    19、从另外个容器内挂载到容器内

    [root@localhost ~]# docker run -it --name volume-test4 --volumes-from volume-test1 centos
    [root@31e417a11b2b /]# ls
    anaconda-post.log  etc    media  root  sys
    bin                home   mnt    run   tmp
    data               lib    opt    sbin  usr
    dev                lib64  proc   srv   var
    [root@31e417a11b2b /]# ls /data/
    aa  bb
    

    20、自己创建个容器,在容器内源码安装nginx

    [root@localhost ~]# docker run --name nginx-man -it centos
    [root@e2eb2fac87da /]# 
    [root@e2eb2fac87da /]# yum install -y wget gcc gcc-c++ make openssl-devel
    [root@e2eb2fac87da /]# wget http://nginx.org/download/nginx-1.15.6.tar.gz
    [root@e2eb2fac87da /]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
    [root@e2eb2fac87da nginx-1.15.6]# useradd -s /sbin/nologin -M www
    [root@e2eb2fac87da nginx-1.15.6]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42
    [root@e2eb2fac87da nginx-1.15.6]# make
    [root@e2eb2fac87da nginx-1.15.6]# make install
    
    [root@e2eb2fac87da nginx-1.15.6]# vi /usr/local/nginx/conf/nginx.conf
    daemon off;
    [root@e2eb2fac87da nginx-1.15.6]# vi /etc/rc.local
    /usr/local/nginx/sbin/nginx
    [root@e2eb2fac87da ~]# exit;               
    exit
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    e2eb2fac87da        centos              "/bin/bash"         22 minutes ago      Exited (0) 10 seconds ago                       nginx-man
    

    21、创建自定义镜像,nginx不能在后台运行,只能用

    docker run ......+ /usr/local/nginx/sbin/nginx
    [root@localhost ~]# docker commit -m "my nginx" e2eb2fac87da hhh/my-nginx:v1
    sha256:d6f97deea553b9be73bd03269bab7a0e408495aa96a652cd8e1cdbf7ca38e3e6
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hhh/my-nginx        v1                  d6f97deea553        28 seconds ago      421 MB
    docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
    docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
    [root@localhost ~]# docker run -d -p 92:80 hhh/my-nginx:v1
    e90770c69f7ef31b5af43f45f3b0b138ff32fca7e6e7700d28d065c2b313ef3c
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    e90770c69f7e        hhh/my-nginx:v1     "/bin/bash"         21 seconds ago      Exited (0) 19 seconds ago                       affectionate_bassi
    [root@localhost ~]# docker run -it hhh/my-nginx:v1
    [root@23798c07f13b /]# vi /etc/rc.local 
    [root@23798c07f13b /]# exit;
    exit
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    23798c07f13b        hhh/my-nginx:v1     "/bin/bash"         2 minutes ago       Exited (0) 52 seconds ago                       laughing_mestorf
    [root@localhost ~]# docker commit -m "v2" 23798c07f13b hhh/my-nginx:v2
    sha256:2399963591df59409a1f35c1f9e107e2a53757c4a9bfad7a6df44486143c80a0
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hhh/my-nginx        v2                  2399963591df        7 seconds ago       421 MB
    hhh/my-nginx        v1                  d6f97deea553        6 minutes ago       421 MB
    docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
    docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
    [root@localhost ~]# docker run -d -p 99:80 hhh/my-nginx:v2 /usr/local/nginx/sbin/nginx
    2d7b444f98254329f594c75883b8d51290a73a673d9fa45322bbc2d742024444
    [root@localhost ~]# docker ps -l
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    2d7b444f9825        hhh/my-nginx:v2     "/usr/local/nginx/..."   9 seconds ago       Up 8 seconds        0.0.0.0:99->80/tcp   heuristic_minsky
    

    22、用Dockerfile创建镜像

    [root@localhost ~]# mkdir /opt/docker-file
    [root@localhost ~]# cd /opt/docker-file/
    [root@localhost docker-file]# mkdir nginx
    [root@localhost docker-file]# cd nginx/
    [root@localhost nginx]# pwd
    /opt/docker-file/nginx
    [root@localhost nginx]# 
    [root@localhost nginx]# cat Dockerfile 
    # This is My first Dockerfile
    # Version 1.0
    # Author: Hhh
    
    # Base images
    FROM centos
    
    #MAINTAINER
    MAINTAINER Hhh
    
    #ADD
    ADD pcre-8.42.tar.gz /usr/local/src
    ADD nginx-1.15.6.tar.gz /usr/local/src
    
    #RUN
    RUN yum install -y wget gcc gcc-c++ make openssl-devel
    RUN useradd -s /sbin/nologin -M www
    
    #WORKDIR
    WORKDIR /usr/local/src/nginx-1.15.6
    
    RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42 && make && make install
    
    RUN echo "daemon off;">> /usr/local/nginx/conf/nginx.conf
    
    ENV PATH /usr/local/nginx/sbin:$PATH
    EXPOSE 80
    
    CMD ["nginx"]
    [root@localhost nginx]# docker build -t nginx-file:v1 /opt/docker-file/nginx/
    [root@localhost nginx]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx-file          v1                  fb1c4448bc67        35 seconds ago      418 MB
    hhh/my-nginx        v2                  2399963591df        About an hour ago   421 MB
    hhh/my-nginx        v1                  d6f97deea553        About an hour ago   421 MB
    docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
    docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
    

    23、用stress工具来测试下容器

    [root@localhost ~]# cd /opt/docker-file/
    [root@localhost docker-file]# 
    [root@localhost docker-file]# ls
    nginx
    [root@localhost docker-file]# mkdir stress
    [root@localhost docker-file]# ls
    nginx  stress
    [root@localhost docker-file]# cd stress/
    [root@localhost stress]# wget http://mirrors.aliyun.com/repo/epel-6.repo
    [root@localhost stress]# cat Dockerfile 
    FROM centos
    ADD epel-6.repo /etc/yum.repos.d/
    RUN yum -y install stress && yum clean all
    ENTRYPOINT ["stress"]
    [root@localhost stress]# docker build -t stress .
    [root@localhost ~]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED              SIZE
    stress               latest              81385a040eba        About a minute ago   223 MB
    nginx-file           v1                  fb1c4448bc67        2 hours ago          418 MB
    hhh/my-nginx         v2                  2399963591df        4 hours ago          421 MB
    hhh/my-nginx         v1                  d6f97deea553        4 hours ago          421 MB
    docker.io/nginx      latest              e81eb098537d        5 days ago           109 MB
    docker.io/centos     latest              75835a67d134        6 weeks ago          200 MB
    docker.io/registry   latest              2e2f252f3c88        2 months ago         33.3 MB
    
    [root@localhost ~]# docker run -it --rm stress --cpu 1
    [root@localhost ~]# docker run -it -c 512 stress --cpu 1
    [root@localhost ~]# docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0
    

    24、创建私有仓库

    [root@localhost ~]# docker pull registry
    [root@localhost ~]# docker run -d -p 5001:5000 registry
    [root@localhost ~]# docker tag elasticsearch 192.168.65.137:5001/test/es:v1
    [root@localhost ~]# docker push 192.168.65.137:5001/test/es:v1

    从另外台服务器拉镜像

    [root@localhost ~]# docker pull 192.168.65.137:5001/test/es:v1
    

    25、docker web界面管理平台搭建

    参考https://www.cnblogs.com/kevingrace/p/6867820.html

    搭建完这样子

     

     

     

     

     

  • 相关阅读:
    python学习笔记(基础二:注释、用户输入、格式化输出)
    python学习笔记(基础一:'hello world'、变量、字符编码)
    python学习笔记(python简史)
    关于第三方框架"SDWebImage"
    <NSSting部分操作整理>
    简单说-自定义cell
    简单说-控制器跳转
    简单说-代理
    iOS程序员须知
    关于swift中的只读属性
  • 原文地址:https://www.cnblogs.com/guantou1992/p/10002614.html
Copyright © 2011-2022 走看看