• docker -学习笔记(docker基本容器操作指令)


    参考:Learn X in Y minutes

    docker指令参考:https://www.runoob.com/docker/docker-command-manual.html

    下载安装
    省略

    一、容器的管理

    1.docker version
    # 拉取hello-world镜像
    docker pull hello-world
    
    # 使用hello-world创建并运行一个容器
    docker run hello-world
    3. 在新的虚拟bash环境,运行ubuntu 容器(container)
     docker run -it ubuntu
    lxg@lxg-opt:~/00$  docker run -it ubuntu   
    
    root@8e4715eb71a3:/#     

    4. 查看当前正在运行的image,(container化的image)

    docker ps

    或 docker container ls

    5. 查看当前所有的image 

     docker ps  -a

    lxg@lxg-opt:/$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
    8e4715eb71a3        ubuntu              "/bin/bash"         2 minutes ago       Up 2 minutes                                       affectionate_fermi
    e2d00352b256        ubuntu              "/bin/bash"         4 minutes ago       Exited (130) 4 minutes ago                         nostalgic_pascal
    4243d653b7a6        ubuntu              "/bin/bash"         About an hour ago   Exited (0) About an hour ago                       nervous_franklin
    6cb28f6e4c68        ubuntu              "-network host"     About an hour ago   Created                                            naughty_bhabha
    104c2d24f695        ubuntu              "--network host"    About an hour ago   Created                                            pensive_villani

       up:正在运行

       exited:以前运行的容器已经退出了

       created:创建

    5. 删除以前生成的image(用CONTAINER id或name)

    docker rm pensive_villani 或
    docker rm 104c2d24f695 
    # 删除所有容器
    docker rm $(docker ps -a -q)
    # 删除所有退出的容器
    docker container prune

    6. 运行image, 为相应的container 定制名称:

    运行hello-world镜像,容器名称是test_container,查看结果:
    docker run --name test_container hello-world
    lxg@lxg-opt:/$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
    4639fda59506        hello-world         "/hello"            6 seconds ago       Exited (0) 4 seconds ago                          test_container

    7.容器和host之间复制文件

    (1)确认容器
    $ docker ps
    CONTAINER ID  IMAGE    COMMAND  CREATED      STATUS      PORTS  NAMES
    72ca2488b353  my_image          X hours ago  Up X hours         my_container
    (2)从host拷贝到容器:
    $ docker cp foo.txt 72ca2488b353:/foo.txt

       (3)容器拷贝到host:

    $ docker cp 72ca2488b353:/foo.txt foo.txt

    8. 进入容器。

    (1)进入正在运行的容器
    $ sudo docker exec -it 775c7c9ee1e1 /bin/bash

     或者

     $ sudo docker attach 容器ID
    (2)另外一种启动容器的方式就是启动一个已经停止运行的容器:
    docker start container_id

      (3)要停止正在运行的容器可以使用docker container stop或docker stop命令,如下:

       docker stop container_id

    (4)创建守护状态的新容器
      
    $ sudo docker run -itd ubuntu:14.04 /bin/bash  
    二、镜像image的管理

    1 # 列出所有镜像

       docker image ls   

      简写:docker images

    2#拉取镜像 

     (1)docker pull centos

    (2)docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

       拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。

       (3)上面使用CentOS,因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:

     docker pull library/centos:latest
    

     (4)如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:

      docker pull mysql/mysql-server:latest

    (5) 通过镜像创建一个容器

    docker run -it centos /bin/bash

    (6)删除镜像, 注意如果镜像的容器未删除,则镜像不可删除
    dockere image rm image_name/image_id

     三、小总结

    没有运行着的容器
    lxg@lxg-opt:/$ docker ps

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    查看所有容器,不论是否运行
    lxg@lxg-opt:/$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
    e7b5b96a7149        ubuntu              "/bin/bash"         16 hours ago        Exited (0) 2 minutes ago                        hopeful_davinci

     运行容器的2中模式

    lxg@lxg-opt:/$ docker start  hopeful_davinci   #运行这个容器,但不进入终端交互模式
    lxg@lxg-opt:/$ docker start -i hopeful_davinci  #运行这个容器,并进入终端交互模式
     注意,通过docker start启动多个终端,是无效的,会重复一个command,需要用docker exec启动多个终端。

    运行了

    lxg@lxg-opt:/$ docker ps

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e7b5b96a7149 ubuntu "/bin/bash" 16 hours ago Up 2 seconds hopeful_davinci

     上述,虽然运行了,但没进入容器,不是交互模式,可以用docker exec进入交互模式

    lxg@lxg-opt:/$ docker exec -it hopeful_davinci bash
    root@e7b5b96a7149:/# 

    用法: docker exec -it containerName bash

     docker exec只能进入运行着的容器,如果容器未运行,则不可进入。


    四、docker组织和架构

    lxg@lxg-opt:/$ docker version
    Client:
     Version:           18.09.7
     API version:       1.39
     Go version:        go1.10.4
     Git commit:        2d0083d
     Built:             Fri Aug 16 14:19:38 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    Server:
     Engine:
      Version:          18.09.7
      API version:      1.39 (minimum version 1.12)
      Go version:       go1.10.4
      Git commit:       2d0083d
      Built:            Thu Aug 15 15:12:41 2019
      OS/Arch:          linux/amd64
      Experimental:     false
    lxg@lxg-opt:/$ 

    可以看到,安装了docker后,宿主机器会有client和server ,而registry在远程的 docker hub (类似于github)






  • 相关阅读:
    SpringBoot中关于Shiro权限管理的整合使用
    Mybatis批处理(批量查询,更新,插入)
    Windows运行常用命令(win+R)
    IntelliJ IDEA中如何设置同时打开多个文件且分行显示?
    springboot的mybatis的xml相关的配置
    springbootl用thymeleaf整合htm
    resultMap的使用
    重识linux-linux主机上的用户信息传递
    重识linux-linux的新增与删除用户组和切换命令
    重识linux-linux的账号与用户组
  • 原文地址:https://www.cnblogs.com/lxgbky/p/12974157.html
Copyright © 2020-2023  润新知