• Docker简单使用


    镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

    容器是镜像的运行时实例 - 实际执行时镜像会在内存中变成什么。默认情况下,它完全独立于主机环境运行,仅在配置为访问主机文件和端口的情况下才执行此操作。

    1. 尝试Hello world

    $ docker run ubuntu:15.10 /bin/echo "Hello world"

    各个参数解析:

    • docker: Docker 的二进制执行文件。
    • run:与前面的 docker 组合来运行一个容器。
    • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
    • /bin/echo "Hello world": 在启动的容器里执行的命令

    以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

     

    2. 运行交互式的容器

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

    各个参数解析:

    • -t:在新容器内指定一个伪终端或终端。
    • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

     

    我们可以通过运行exit命令或者使用CTRL+D来退出容器

    3. 启动容器(后台模式)

    $ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

     

    这个长字符串叫做容器ID,对每个容器来说都是唯一的

    3.2 可以通过 docker ps 查看

     

    CONTAINER ID:容器ID

    NAMES:自动分配的容器名称

    3.3 可以通过 docker logs id/名称 查看容器内的标准输出

    3.4 可以通过 docker stop id/名称 命令来停止容器:

    4. 运行一个web应用

    $ docker pull training/webapp  # 载入镜像
    $ docker run -d -P training/webapp python app.py

    我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

    参数说明:

    • -d:让容器在后台运行。
    • -P:将容器内部使用的网络端口映射到我们使用的主机上。

    4.2. 使用 docker ps 来查看我们正在运行的容器:

    Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上这时我们可以通过浏览器访问WEB应用

     

    –p: 也可以 通过 –p 指定端口

    $ docker run -d -p 5000:5000 training/webapp python app.py

     docker port id/名称,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

    查看 WEB 应用程序日志可以使用 docker logs -f id/名称

    $ docker logs -f bf08b7f2cd89

    查看WEB应用程序容器的进程docker top id/名称

    检查 WEB 应用程序docker inspect id/名称

    停止 WEB 应用容器docker stop id/名称

    重启WEB应用容器docker start id/名称

    移除WEB应用容器docker rm id/名称

     

     

    5. 命令及注意点

    5.1. 命令

    (1) 罗列所有镜像:

    docker images

    (2)、删除镜像,从本地删除一个已经下载的镜像

    docker rmi IMAGE [IMAGE...]
    docker rmi centos:latest

    (3)创建名为webdemo的docker容器 并进入 webdemo1,命令行:

    docker run -it --name webdemo1 -p 81:8080 tomcat /bin/bash

    -i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本

    注意:name前面是两个-, 端口前面有-p, 后面有个tomcat;

    (4) 罗列所有的docker容器:包含了启动的Docker和没有启动的容器Docker

    docker ps -a;

    (5) 启动容器:

    docker start webdemo

    可能端口会被占用,我们可以先把运行的docker实例停掉,然后再删掉,

    docker kill webdemo
     
    docker rm webdemo

    (6) 停止容器:

    docker stop webdemo

    (7)拷贝文件

    从主机复制到容器 sudo docker cp host_path containerID:container_path

    从容器复制到主机 sudo docker cp containerID:container_path host_path

    请注意,以上这两个命令都是在主机中执行的,不能再容器中执行

    docker cp /root/software/docker.war webdemo:/
    docker cp demo:/abc.txt  /root/software/

    5.2. Docker进入后台容器

    把原来创建的容器ssh关闭了,然后又打开,如何进入已经打开的容器呢,两种方法

    a:使用docker attach命令

    docker attach db3 或者 docker attach d48b21a7e439

    db3是后台容器的NAMES,d48b21a7e439是容器的进程ID  CONTAINER ID

    然后就进去了这个容器的ssh界面。

    但是它有一个缺点,只要这个连接终止,或者使用了exit命令,容器就会退出后台运行

    b:使用docker exec命令

    这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

    docker exec -it db3 /bin/sh 或者 docker exec -it d48b21a7e439 /bin/sh

    6. 让容器进入后台运行

    Ctrl + P + Q 退出容器保持后台运行(按住ctrl和P 再按Q),再用 docker ps 进行查看:  exit可以直接退出容器

     

    进入后台运行的进程:使用docker exec命令

    这个命令使用exit命令后,不会退出后台,一般使用这个命令,使用方法如下

    docker exec -it name /bin/sh 或者 docker exec -it id /bin/sh

    7. 远程仓库

    6.1. 注册

    进入Docker Hub首先注册一个账号:https://hub.docker.com/注册

    6.2. 登录

    完成后,我们可以通过命令行在本地绑定对应的Docker Hub账号。

    docker login

     

    6.3. 标记镜像

    用于将本地镜像与镜像库中的镜像仓库相关联的表示法为 username/repository:tag。tag 是可选项,但建议使用它,因为这是镜像库用于为 Docker 镜像指定版本的机制。现在,将其合并到一起,以标记镜像。此命令的语法为:

    docker tag image username/repository:tag

    docker tag tomcat a11745/get-started:part1

    6.4.发布镜像

    将已标记的镜像上传到镜像仓库:

    docker push a11745/get-started:part1

    完成后,将公开此上传的结果。如果登录 Docker Hub,可以使用其 pull 命令看到新的镜像。

    6.5.从远程镜像仓库中拉取并运行镜像

    从现在开始,您可以使用 docker run,并且可以使用以下命令在任何机器上运行您的应用:

    docker run -it --name webapp2 -p 81:8080 a11745/get-started:part1 /bin/bash

    如果镜像在机器本地不可用,Docker 将从镜像仓库中拉取它。

  • 相关阅读:
    [LeetCode] 19. Remove Nth Node From End of List 移除链表倒数第N个节点
    [LeetCode] 27. Remove Element 移除元素
    [LeetCode] 240. Search a 2D Matrix II 搜索一个二维矩阵 II
    [LeetCode] 74. Search a 2D Matrix 搜索一个二维矩阵
    [LeetCode] 452. Minimum Number of Arrows to Burst Balloons 最少箭数爆气球
    [LeetCode] 312. Burst Balloons 爆气球
    [LeetCode] 257. Binary Tree Paths 二叉树路径
    [LeetCode] 24. Swap Nodes in Pairs 成对交换节点
    [LeetCode] 680. Valid Palindrome II 验证回文字符串 II
    [LeetCode] 234. Palindrome Linked List 回文链表
  • 原文地址:https://www.cnblogs.com/jokerq/p/10723574.html
Copyright © 2020-2023  润新知