• docker 入坑2


    上一节我们安装好了docker,那么这节我们讲一下docker基本命令使用

    查看版本

    $ sudo docker --version
    

     返回:Docker version 18.09.0, build 4d60db4
    操作命令前需要使用管理员权限,每次操作都要添加sudo有点麻烦,有没有办法省略掉sudo呢?答案是有的:

    $ sudo gpasswd -a ${USER} docker
    

     这里的${USER}代表当前用户,比如我的用户名是mantishell

    mantishell@zkl:~$ sudo gpasswd -a mantishell docker
    

    重启docker

    $ sudo service docker restart
    

    然后再次使用version命令查看版本:

    $ docker --version
    

     同样可以查看到当前docker的版本。

    启动容器

    $ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    ARG如果是name,表示命令自定义的容器名字

    eg: $ docker run  ubuntu

    它首先检查本地是否有ubuntu这个镜像,没有的话就从官网拉取。这条命令执行完以后,什么也没有返回,如何查看呢?

    查看容器

    $ docker ps [OPTIONS]
    

     $ docker ps  默认查看正在运行的

    options:

    • -a :显示所有的容器,包括未运行的。
    • -l :显示最近创建的容器。
    mantishell@zkl:~$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
    285843bc50ec        ubuntu              "/bin/bash"              7 minutes ago       Exited (0) 10 seconds ago                       affectionate_mendeleev
    

    启动、停止、重启容器

    docker start [OPTIONS] CONTAINER [CONTAINER...]
    docker stop [OPTIONS] CONTAINER [CONTAINER...]
    docker restart [OPTIONS] CONTAINER [CONTAINER...]
    

     可以是id,也可以是名字

    eg:$ docker start 285843bc50ec 或者 $ docker start affectionate_mendeleev

    这个id和name都是自动生成的,写起来比较麻烦,有没有简单的办法呢?答案仍然是有的:我们可以在创建容器的时候指定容器的名字

    mantishell@zkl:~$ docker run --name dc1 ubuntu 
    mantishell@zkl:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2ced2dbbd472 ubuntu "/bin/bash" 6 seconds ago Exited (0) 4 seconds ago dc1

    再次启动容器的时候可以是:$ docker start dc1 是不是方便了很多!

    如果我们想在容器里操作一些东西,怎么办呢?现在创建的容器创建完就停止了,肯定是不能操作的,那怎么办呢?

    启动交互式容器

    $ docker run -i -t IMAGE /bin/bash
      -i --interactive=true|false 默认是false
      -t --tty=true|false 默认是false
    

     eg: $ docker run -i -t ubuntu /bin/bash

    这时候创建完容器并不会停止掉,我们可以在里面执行ubuntu的命令,ls,cd,mkdir等等。

    如果想退出当前容器怎么办呢?

    一种方式:直接退出并停止:exit

    一种方式:CTRL+P,CTRL+Q,让它在后台运行变成守护式容器

    守护式容器

    另外一种方式:在创建容器的同时指定是守护式容器:

    -d: 后台运行容器,并返回容器ID;

    docker run --name dc1 -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"
    

     附加到运行中的容器

    $ docker attach 容器的name
    

     运行中的容器启动新进程

    $ docker exec [-d] [-i] [-t] 容器名 [COMMAND] [ARG...]
    docker exec -i -t dc1 /bin/bash 打开一个会话
    

     停止容器的第二种方式

     $ docker kill 容器名
    

     删除停止的容器

    $ docker rm 容器名
    

    查看容器日志

    $ docker logs [-f] [-t] [--tail] 容器名
      -f, --follows=true|false 默认false
      -t, -- timestamps=true|false默认false
      --tail="all"
    

     eg: $ docker logs -tf --tail 10 dc1

    查看容器内进程

    $ docker top 容器名
    

     容器端口映射

    $ docker run [-P] [-p]
      -P, --publish-all=true|false 默认false
    $ docker run -P -i -t ubuntu /bin/bash
      -p, --publish=[]
    containerPort 宿主机的任意端口:docker的端口80
    $ docker run -p 80 -i -t ubuntu /bin/bash
    hostPort:containerPort 宿主机的端口8080:docker的端口80
    $ docker run -p 8080:80 -i -t ubuntu /bin/bash-i
    ip::containerPort 宿主机的ip:docker的端口80
    $ docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
    ip:hostPort:containerPort 宿主机的ip和端口8080:docker的端口80
    $ docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
    

    我们做个小测试,访问docker的网站

    $ docker run -p 80 --name web -it ubuntu /bin/bash
    # apt-get install update
    # apt-get inistall -y nginx
    # apt-get install -y vim
    # apt-get install -y curl # mkdir -p /var/www/html # ls /etc/nginx # vim /etc/nginx/sites-enabled/default

       使用ctrl+p,ctrl+q退出

    把/home/docker/demo/index.html拷贝到docker中

    docker -p /home/docker/demo/index.html dc1:/var/www/html
    

     使用curl访问80端口查看结果

    # curl http://localhost:80
    

     退回到宿主机ubuntu中

    首先查看宿主机对应的端口

    $ docker ps
    

    使用浏览器访问刚查到的端口号假如是32768

    http://localhost:32768

  • 相关阅读:
    这2天参加WinHEC大会,园子里以有很多介绍,就不多说了,会上用手机录了一段windows 最新触摸屏操作技术演示,可以看看
    自启动U盘,一个会流行的好玩意
    为什么数据库导入是自动增量属性自动消失乐呢?
    网络带宽利用率的一般计算方法
    防止ARP病毒的一个小窍门
    Windows 系统补丁管理策略
    PDC大会就要召开了,园里有去的吗,看到一片文章,不知道windows7是否真的很好
    门户框架在项目和产品中的使用心得
    这段时间开发了一个共享软件,主要做IP资源管理的(SmartIPView),大家有兴趣可以看看,或给指点指点
    OpenGL自学教程1(窗口建立)
  • 原文地址:https://www.cnblogs.com/mantishell/p/11294538.html
Copyright © 2020-2023  润新知