zoukankan      html  css  js  c++  java
  • 【Docker】命令 create

    参考教程:https://docs.docker.com/engine/reference/commandline/create/

    环境

    1. virtual box 6.1
    2. centos 7.8
    3. docker 19.03

    命令格式

    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

    使用 create 命令可以根据镜像创建一个未启动的容器。

    docker create 命令创建一个指定的镜像上创建一层可写的容器层,并为运行指定的命令做好准备。容器的 ID 会打印到标准输出流上,这个命令和 docker run -d 命令很相似,除了不会启动之外。你可以使用 docker start 容器 ID 来启动这个容器。如果您想提前配置容器,以便在需要时可以直接启动它,这将很有用。

    命令选项

    由于命令选项有很多,下面选择几个常用的进行学习。

    名称 默认值 描述
    --env , -e 设置环境变量
    --env-file 从一个文件中读取环境变量
    --expose 暴露一个随机的端口
    --help 打印帮助信息
    --hostname , -h 设置容器的 hostname
    --interactive , -i 打开一个标准输入
    --mac-address 设置 mac 地址:92:d0:c6:0a:29:33
    --name 给容器设置一个名称
    --rm 当容器退出时,自动删除
    --tty , -t 分配一个伪终端
    --workdir , -w 设置工作目录

    示例

    创建容器

    [root@master ~]# docker create busybox
    Unable to find image 'busybox:latest' locally
    latest: Pulling from library/busybox
    61c5ed1cbdf8: Pull complete
    Digest: sha256:4f47c01fa91355af2865ac10fef5bf6ec9c7f42ad2321377c21e844427972977
    Status: Downloaded newer image for busybox:latest
    a0c181fd2db5b5864ab418c222fb87386a133dfed2996b5d5d7d8bafbe1f2f53
    

    创建的容器的 id 是:a0c181fd2db5b5864ab418c222fb87386a133dfed2996b5d5d7d8bafbe1f2f53

    可以通过 docker ps -a 查看所有的容器,即使不是在运行(Running)状态。

    [root@master ~]# docker ps -a
    CONTAINER ID    IMAGE       COMMAND      CREATED              STATUS      PORTS     NAMES
    a0c181fd2db5    busybox     "sh"         About a minute ago   Created               sharp_mclaren
    

    自动删除容器

    [root@master docker]# docker create --rm busybox
    ee0643c7fffa4c6b71fd2c691716cd9581efbaed132b69bf8c4dee8cee2e38ab
    [root@master docker]# docker start ee
    ee
    [root@master docker]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    

    打开交互终端

    [root@master docker]# docker create -it busybox /bin/sh
    69575a4213c1ace85b198f3a94b50acc21a3e96ee3429b48ef9d72a39f0f250a
    [root@master docker]# docker start -i 69
    / # ls
    bin   dev   etc   home  proc  root  sys   tmp   usr   var
    / #
    

    设置环境变量

    [root@master docker]# docker create -it --env USER_NAME=jiangbo busybox /bin/sh
    1b180d917835c348d17156633be0d0fb592218182665f37a3f609e87e63a0926
    [root@master docker]# docker start -i 1b1
    / # env
    HOSTNAME=1b180d917835
    SHLVL=1
    HOME=/root
    TERM=xterm
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    USER_NAME=jiangbo
    

    从文件设置环境变量

    [root@master docker]# cat env.properties
    USER_NAME=jiangbo
    AGE=44
    [root@master docker]# docker create -it --env-file=env.properties busybox /bin/sh
    a845a16c71aa3f2ded58fcd998b43d0304341e946e7013a842088700a658622f
    [root@master docker]# docker start -i a8
    / # env
    HOSTNAME=a845a16c71aa
    SHLVL=1
    HOME=/root
    TERM=xterm
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    USER_NAME=jiangbo
    AGE=44
    

    设置 mac 地址

    [root@master docker]# docker create -it --mac-address 92:d0:c6:0a:29:33  busybox /bin/sh
    055e50604a0c4df3c7a66f7bd8b686ddf7bc35425b359777cb5883ef98e08535
    [root@master docker]# docker start -i 05
    / # ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    47: eth0@if48: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
        link/ether 92:d0:c6:0a:29:33 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    / #
    

    设置 hostname

    [root@master docker]# docker create -it --hostname jiangbo  busybox /bin/sh
    71e09755dd856c26d13c7d2649f920dcf289e7590877e479ca6038b2a86ab15d
    [root@master docker]# docker start -i 71
    / # hostname
    jiangbo
    / #
    

    指定名称

    [root@master docker]# docker create -it --name myBusybox  busybox /bin/sh
    d06c4b236233790a2c3a9f1f63d9a22239cb2c4cc29ba189dc222a92558467e1
    [root@master docker]# docker start -i myBusybox
    / # ls
    bin   dev   etc   home  proc  root  sys   tmp   usr   var
    / #
    

    指定工作目录

    [root@master docker]# docker create -it --workdir /home/root  busybox /bin/sh
    a108147fd409b840c58226b2cef95aeac8d32402343062d5c7e5bc73206ecdde
    [root@master docker]# docker start -i a1
    /home/root # ls
    /home/root #
    

    总结

    介绍了 create 命令的使用,在创建容器时,可以指定各种参数。

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/13864088.html
Copyright © 2011-2022 走看看