zoukankan      html  css  js  c++  java
  • docker基本操作

    docker基本操作

    Docker Hello World

    Docker 允许你在容器内运行程序,使用docker run命令在容器内运行一个应用程序
    输出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 run -it ubuntu:15.10 /bin/bash
    
    • 参数解析
      • -t :在新容器内指定一个伪终端或终端
      • -i :允许你对容器内的标准(STDIN)进行交互

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

    启动容器(后台模式)

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

    在容器内使用docker logs命令,查看容器内的标准输出

    docker logs <容器id>
    

    停止容器

    docker stop <容器id>
    

    容器使用

    docker 客户端非常简单,我们可以直接输出docker命令来查看到Docker客户端的所有命令选项
    可以使用docker --help更深入的了解指定的Docker命令的使用方法
    例如我们要查看docker stats指令的具体使用方法

    docker stats --help
    

    运行一个web应用

    docker pull training/webapp # 载入镜像
    docker run -d -P training/webapp python app.py
    
    • 参数解析
      • -d:让容器在后台运行
      • -P:将容器内部使用的网络端口映射到我们使用的主机上

    查看web应用容器

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

    docker ps -l 查询最后一次创建的容器:

    会多出端口信息POSTS

    0.0.0.0:32768->5000/tcp

    Docker开放了5000端口(默认Python Flask端口)映射到主机端口32768上
    我们也可以通过-p 参数来设置不一样的端口

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

    查看web应用程序日志

    docker logs <ID或名字>可以查看容器内部的标准输出

    查看web应用程序容器的进程

    docker top <ID或名字> 来查看容器内部运行的进程

    检查 WEB 应用程序

    docker inspect <ID或名字> 查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息

    移除WEB应用容器

    docker rm <ID或容器名> 删除不需要的容器,删除容器时,容器必须是停止状态,否则会报如下错误

    Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove

    Docker镜像使用

    当运行容器时,使用的镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载

    列出镜像列表

    docker images
    
    • 选项说明
      • REPOSITORY :表示镜像的仓库源
      • TAG :镜像内的标签
      • IMAGE ID :镜像ID
      • CREATED :镜像创建时间
      • SIZE :镜像大小

    同一个仓库源可以有多个TAG,代表这这个仓库的源的不同版本,比如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用REPOSITORY:TAG来定义不同的镜像,如果不指定TAG,则默认使用最新的镜像ubuntu:latest

    获取一个新的镜像

    docker pull ubuntu:13.10
    

    查找镜像

    我们可以从Docker Hub网站来搜索镜像,DockerDocker Hub

    docker sercch httpd
    
    • 参数解析
      • NAME :镜像仓库的名称
      • DESCRIPTION:镜像的描述
      • OFFICIAL :是否docker官方发布

    创建镜像

    当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

    1. 从已经创建的容器中更新镜像,并且提交这个镜像
    2. 使用 Dockerfile 指令来创建一个新的镜像

    更新镜像

    更新镜像之前,我们需要使用镜像来创建一个容器

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

    修改完容器内容后,可以通过docker commit来提交容器副本

    docker commit -m="[提交信息]" -a="[作者名]" e218edb10161  runoob/ubuntu:v2
    
    • 参数说明
      • -m:提交的描述信息
      • -a:指定镜像作者
      • e218edb10161 :容器ID
      • runoob/ubuntu:v2:指定要创建的目标镜像名

    可以使用docker images 命令来查看我们的新镜像 runoob/ubuntu:v2

    构建镜像

    我们使用docker build,从零开始创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

    
    cat Dockerfile 
    
    FROM    centos:6.7
    MAINTAINER      Fisher "fisher@sudops.com"
    
    RUN     /bin/echo 'root:123456' |chpasswd
    RUN     useradd runoob
    RUN     /bin/echo 'runoob:123456' |chpasswd
    RUN     /bin/echo -e "LANG="en_US.UTF-8"" >/etc/default/local
    EXPOSE  22
    EXPOSE  80
    CMD     /usr/sbin/sshd -D
    

    每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
    第一条FROM,指定使用哪个镜像源RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。
    然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

    docker build -t runoob/centos:6.7 .
    
    • 参数说明
      • -t 指定要创建的目标镜像名
      • . :Dockerfile文件所在的目录,可以指定Dockerfile的绝对路径

    使用docker images 查看创建的镜像已经在列表中存在

    设置镜像标签

    docker tag <容器ID> runoob/centos:dev
    

    使用 docker images 命令可以看到,指定id的镜像多一个标签。

    Docker容器连接

    端口映射

    docker run -d -P training/webapp python app.py
    
    • 参数解析
      • -P :是容器内部端口随机映射到主机的高端口
      • -p : 是容器内部端口绑定到指定的主机端口
    docker run -d -p 5000:5000 training/webapp python app.py
    

    另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。

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

    这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。
    上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。

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

    docker port 命令可以让我们快捷地查看端口的绑定情况。

    docker prot adoring_stonebraker 5000
    

    Docker容器连接

    端口映射并不是唯一把 docker 连接到另一个容器的方法。
    docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
    docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

    容器命名

    当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器,例如:

    docker run -d -p --name test training/webapp python app.py
    

    Docker删除所有镜像

    docker image prune -a -f
    
  • 相关阅读:
    2021.1.28 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2020.12.14 个人训练赛补题报告
    2020.11.28 2020团体程序设计天梯赛补题报告
    2020.12.3 Codeforces Beta Round #73(Div2)补题报告
    Xhorse VVDI Prog V5.0.6 is Ready for BCM2 Adapter
    Program 2021 Ford Bronco All Keys Lost using VVDI Key Tool Plus
    Xhorse VVDI Prog V5.0.4 Software Update in July 2021
    How to use Xhorse VVDI2 to Exchange BMW FEM/BDC Module?
  • 原文地址:https://www.cnblogs.com/moshuying/p/11903513.html
Copyright © 2011-2022 走看看