精华内容
下载资源
问答
  • Docker 命令详解

    2021-01-09 11:15:31
    2,docker容器管理常用命令 3,docker将数据挂载到容器的三种方式 1, 镜像管理命令 [root@linux-node4 diff]# docker help # 查看docker帮助 [root@linux-node4 diff]# docker image --help # 查看 docker中 镜像...
  • 自己整理总结的docker命令,一般常用的都在里面,包括升级最新版本docker,建仓库,数据卷常用命令,查看,建立,删除等等。
  • docker命令详解

    万次阅读 2018-12-23 12:58:26
    镜像下载 搜索镜像 docker search +镜像名字 #docker search centos 从Docker Hub中搜索符合条件的镜像 ...开启网络转发功能(默认为开启状态)若无开启,可以使用以下命令开启 #vim /etc/sysctl...

    镜像下载

    • 搜索镜像
    • docker search +镜像名字
      #docker search centos

    从Docker Hub中搜索符合条件的镜像
    在这里插入图片描述

    • 下载镜像
      #docker pull +镜像名字
      #docker pull centos
      在这里插入图片描述

    • 查看镜像
      #docker images
      在这里插入图片描述

    • 开启网络转发功能(默认为开启状态)若无开启,可以使用以下命令开启
      #vim /etc/sysctl.conf
      插入一条语句:net.ipv4.ip_forward=1
      #sysctl -p // 使得语句生效
      #cat /proc/sys/net/ipv4/ip_forward
      在这里插入图片描述
      若你的网络转发功能为开启,在连接docker时,会出现以下错误。导致docker容器中的镜像无法上网。
      在这里插入图片描述

    • docker 平台使用命令

    • 例1:运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令
      docker 的参数:
      run 运行
      -t 以交互模式运行容器,
      -i 为容器重新分配一个伪输入终端
      [root@break du]# docker images //查看当前下载的镜像
      [root@break du]# docker run -it centos:latest /bin/bash //运行起来一个容器
      [root@73fb5e288c8d /]# exit //退出当前容器
      在这里插入图片描述
      在这里插入图片描述

    • 例2:在 container 中启动一个长久运行的进程,不断向stdin输出 hello。模拟一个后台运行的服务
      docker命令参数:
      -d :后台运行容器,并且返回容器ID
      -c :后面跟着待完成的命令
      [root@break du]# docker run -d centos:latest /bin/bash -c “while true;do echo hello ;sleep 1;done”
      在这里插入图片描述
      #docker logs c4765de4fa30
      在这里插入图片描述
      例3:杀死一个容器。 比如:杀死一个正在后台运行的容器
      [root@break du]# docker run -d centos:latest /bin/bash -c “while true;do echo hello ;sleep 1;done” //docker启动,模拟一个后台服务。
      973835e1a37adacedce8850e688b9f2a0c7cf16690e8b3cbd83685086e97d1b1
      [root@break du]# docker ps //列出所有正在运行中的镜像
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      973835e1a37a centos:latest “/bin/bash -c 'while…” 6 seconds ago Up 3 seconds jolly_davinci
      [root@break du]# docker kill 973835e1a37a //杀死一个正在后台运行的容器
      973835e1a37a
      [root@break du]# docker ps
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      在这里插入图片描述
      例4:启动、停止、重启 container容器实例
      [root@break du]# docker run -d centos:latest /bin/bash -c “while true;do echo firends;sleep 3;done” //模拟一个后台运行的服务
      de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462
      [root@break du]# docker logs de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462 //查看日志
      firends
      firends
      [root@break du]# docker ps //列出正在运行的容器
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      de25c2541b2d centos:latest “/bin/bash -c 'while…” 20 seconds ago Up 19 seconds pedantic_colden
      [root@break du]# docker stop de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462 //停止一个容器
      de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462
      [root@break du]# docker ps //列出运行中的容器
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      [root@break du]# docker start de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462 //启动一个容器
      de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462
      [root@break du]# docker ps
      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      de25c2541b2d centos:latest “/bin/bash -c 'while…” 55 seconds ago Up 5 seconds pedantic_colden
      [root@break du]# docker logs de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462
      firends
      firends
      firends

    [root@break du]# docker rm -f de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462 //删除容器
    de25c2541b2deda1e2413855d7e88564ab6fb8936313e9ddae3a989aff009462
    [root@break du]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    在这里插入图片描述
    在这里插入图片描述

    docker 镜像制作

    • 1docker commit +ID/name
      实例5:创建一个有apache的centos镜像
      1使用docker commit +容器ID+新建的镜像名字
      [root@break du]# docker run -it centos:latest /bin/bash
      [root@4b92f408db31 /]# yum -y install httpd

    在这里插入图片描述
    [root@break du]# docker commit 4b92f408db31 docker-centos:apache
    在这里插入图片描述
    在这里插入图片描述
    2使用Dockerfile来创建一个含有apache的镜像

    1. 创建工作目录
    mkdir /docker-build
    cd /docker-build
    touch Docker-file
    注意:make自动化编译时,需要Makefile文件,而自动化创建docker镜像时,需要Docker-file
    
    1. 编辑Dockerfile
    FROM centos:latest
    MAINTAINER <break@du.cn>
    RUN yum -y install httpd
    ADD start.sh /usr/local/bin/start.sh
    ADD index.html /var/www/html/index.html
    

    注释:
    FROM centos:latest # FROM 基于哪个镜像
    MAINTAINER break@du # MAINTAINER 镜像创建者
    RUN yum -y install httpd #RUN 安装软件用
    ADD start.sh /usr/local/bin/start.sh
    ADD index.html /var/www/html/index.html
    ADD 将文件src拷贝到新产生的镜像的文件系统对应的路径dest。所有拷贝到新镜像中的文件和文件夹权限为0755,uid和gid为0

    1. 创建start.sh和index.html
    echo "/usr/sbin/httpd-DFOREGROUND"  > start.sh
    chmod a+x start.sh
    echo "my test images" > index.html
    
    1. 使用build来创建image
    docker build -t docker-centos:apacheruning ./
    

    在这里插入图片描述
    在这里插入图片描述

    docker发布

    方法:Save Image To TarBall
    方法1:保存 Image 到 tar 包——将刚才做好的镜像打包。
    语法:docker save -o 导出的镜像名.tar 本地镜像名:镜像标签

    例如:

    docker save -o docker-centos:running.tar docker-centos:apacheruning
    

    在这里插入图片描述

    docker load -i docker-centos:apacherunning.tar //导入本地镜像

    docker优点

    1.一些优势和VM一样,但不是所有都一样。
    比VM小,比VM快,Docker容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。Docker启动一个容器实例时间很短,一两秒就可以启动一个实例。
    2.对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT的发布速度更快。
    Docker是一个开放的平台,构建,发布和运行分布式应用程序。
    Docker使应用程序能够快速从组件组装和避免开发和生产环境之间的摩擦。
    3.您可以在部署在公司局域网或云或虚拟机上使用它。
    4.开发人员并不关心具体哪个Linux操作系统
    使用Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。
    然后,在部署时一切是完全一样的,因为一切都在DockerImage的容器在其上运行。
    开发人员负责并且能够确保所有的相关性得到满足。
    5.Google,微软,亚马逊,IBM等都支持Docker。
    6.Docker支持Unix/Linux操作系统,也支持Windows或Mac

    展开全文
  • docker常用命令详解

    2021-02-11 10:30:53
    docker常用命令详解 docker logs -t --since="2018-12-26 06:39:22" --until "2018-12-26 06:39:55" c-front 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只...

    docker常用命令详解 

     

    本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来。

    根据自己的理解,总的来说分为以下几种:

    • Docker环境信息 — docker [info|version]
    • 容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
    • 容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
    • 容器rootfs命令 — docker [commit|cp|diff]
    • 镜像仓库 — docker [login|pull|push|search]
    • 本地镜像管理 — docker [build|images|rmi|tag|save|import|load]
    • 容器资源管理 — docker [volume|network]
    • 系统日志信息 — docker [events|history|logs]

    从docker命令使用出发,梳理出如下命令结构图:

    -Docker环境信息

    --info命令

    用于检测Docker是否正确安装,一般结合docker version命令使用。

     

    [devadmin@swarm1 ~]$ docker info
    Containers: 43
     Running: 9
     Paused: 0
     Stopped: 34
    Images: 140
    Server Version: 17.09.0-ce
    Storage Driver: overlay
     Backing Filesystem: xfs
     Supports d_type: false
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    ...

    --version命令

     

    [devadmin@swarm1 ~]$ docker info
    Containers: 43
     Running: 9
     Paused: 0
     Stopped: 34
    Images: 140
    Server Version: 17.09.0-ce
    Storage Driver: overlay
     Backing Filesystem: xfs
     Supports d_type: false
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    ...

     容器运维操作

    --attach命令

    docker attach命令对应开发者很有用,可以连接到正在运行的容器,观察容器的运行状况,或与容器的主进程进行交互。

    --inspect命令

    用于查看镜像和容器的详细信息,默认会列出全部信息,可以通过--format参数来指定输出的模板格式,以便输出特定信息。

     查看容器的信息container(ps)

    docker ps命令可以查看容器的CONTAINER IDNAMEIMAGE NAME、端口开启及绑定、容器启动后执行的COMMNAD。最常用的功能是通过ps来找到CONTAINER_ID,以便对特定容器进行操作。
    docker ps 默认显示当前正在运行中的container
    docker ps -a 查看包括已经停止的所有容器
    docker ps -l 显示最新启动的一个容器(包括已停止的)

    示例

    [devadmin@swarm1 ~]$ docker ps -l
    CONTAINER ID        IMAGE                                            COMMAND              CREATED             STATUS              PORTS                      NAMES
    1cfb8ad8642e        regloc.com/test/settlequery:201711271708   "sh entrypoint.sh"   22 hours ago        Up 22 hours         0.0.0.0:18182->18182/tcp   settlequery.z4taavbos34np74za1bu674az.ncj2uocqbh15ljxhui0yccd9t
    [devadmin@swarm1 ~]$ 

     

    -- 列出机器上的镜像(images)

    # docker images 
    REPOSITORY               TAG             IMAGE ID        CREATED         VIRTUAL SIZE
    ubuntu                   14.10           2185fd50e2ca    13 days ago     236.9 MB
    …
    

    其中我们可以根据REPOSITORY来判断这个镜像是来自哪个服务器,如果没有 / 则表示官方镜像,类似于username/repos_name表示Github的个人公共库,类似于regsistory.example.com:5000/repos_name则表示的是私服。
    IMAGE ID列其实是缩写,要显示完整则带上--no-trunc选项

    2. 在docker index中搜索image(search)

    Usage: docker search TERM

    # docker search seanlo
    NAME                DESCRIPTION           STARS     OFFICIAL   AUTOMATED
    seanloook/centos6   sean's docker repos         0
    

    搜索的范围是官方镜像和所有个人公共镜像。NAME列的 / 后面是仓库的名字。

    3. 从docker registry server 中下拉image或repository(pull)

    Usage: docker pull [OPTIONS] NAME[:TAG]

    # docker pull centos
    

    上面的命令需要注意,在docker v1.2版本以前,会下载官方镜像的centos仓库里的所有镜像,而从v.13开始官方文档里的说明变了:will pull the centos:latest image, its intermediate layers and any aliases of the same id,也就是只会下载tag为latest的镜像(以及同一images id的其他tag)。
    也可以明确指定具体的镜像:

    # docker pull centos:centos6
    

    当然也可以从某个人的公共仓库(包括自己是私人仓库)拉取,形如docker pull username/repository<:tag_name> :

    # docker pull seanlook/centos:centos6
    

    如果你没有网络,或者从其他私服获取镜像,形如docker pull registry.domain.com:5000/repos:<tag_name>

    # docker pull dl.dockerpool.com:5000/mongo:latest
    

    4. 推送一个image或repository到registry(push)

    与上面的pull对应,可以推送到Docker Hub的Public、Private以及私服,但不能推送到Top Level Repository。

    # docker push seanlook/mongo
    # docker push registry.tp-link.net:5000/mongo:2014-10-27
    

    registry.tp-link.net也可以写成IP,172.29.88.222。
    在repository不存在的情况下,命令行下push上去的会为我们创建为私有库,然而通过浏览器创建的默认为公共库。

    5. 从image启动一个container(run)

    docker run命令首先会从特定的image创之上create一层可写的container,然后通过start命令来启动它。停止的container可以重新启动并保留原来的修改。run命令启动参数有很多,以下是一些常规使用说明,更多部分请参考http://www.cnphp6.com/archives/24899
    当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

    • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
    • 利用镜像创建并启动一个容器
    • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
    • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
    • 从地址池配置一个 ip 地址给容器
    • 执行用户指定的应用程序
    • 执行完毕后容器被终止

    Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 

    OPTIONS说明:

    • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

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

    • -i: 以交互模式运行容器,通常与 -t 同时使用;

    • -P: 随机端口映射,容器内部端口随机映射到主机的端口

    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    • --name="nginx-lb": 为容器指定一个名称;

    • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    • -h "mars": 指定容器的hostname;

    • -e username="ritchie": 设置环境变量;

    • --env-file=[]: 从指定文件读入环境变量;

    • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

    • -m :设置容器使用内存最大值;

    • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    • --link=[]: 添加链接到另一个容器;

    • --expose=[]: 开放一个端口或一组端口;

    • --volume , -v: 绑定一个卷

    5.1 使用image创建container并执行相应命令,然后停止

    # docker run ubuntu echo "hello world"
    hello word
    

    这是最简单的方式,跟在本地直接执行echo 'hello world' 几乎感觉不出任何区别,而实际上它会从本地ubuntu:latest镜像启动到一个容器,并执行打印命令后退出(docker ps -l可查看)。需要注意的是,默认有一个--rm=true参数,即完成操作后停止容器并从文件系统移除。因为Docker的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
    容器启动后会自动随机生成一个CONTAINER ID,这个ID在后面commit命令后可以变为IMAGE ID

    使用image创建container并进入交互模式, login shell是/bin/bash

    # docker run -i -t --name mytest centos:centos6 /bin/bash
    bash-4.1#
    

    上面的--name参数可以指定启动后的容器名字,如果不指定则docker会帮我们取一个名字。镜像centos:centos6也可以用IMAGE ID (68edf809afe7) 代替),并且会启动一个伪终端,但通过ps或top命令我们却只能看到一两个进程,因为容器的核心是所执行的应用程序,所需要的资源都是应用程序运行所必需的,除此之外,并没有其它的资源,可见Docker对资源的利用率极高。此时使用exit或Ctrl+D退出后,这个容器也就消失了(消失后的容器并没有完全删除?)
    (那么多个TAG不同而IMAGE ID相同的的镜像究竟会运行以哪一个TAG启动呢

    5.2 运行出一个container放到后台运行

    # docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 2; done"
    ae60c4b642058fefcc61ada85a610914bed9f5df0e2aa147100eab85cea785dc
    

    它将直接把启动的container挂起放在后台运行(这才叫saas),并且会输出一个CONTAINER ID,通过docker ps可以看到这个容器的信息,可在container外面查看它的输出docker logs ae60c4b64205,也可以通过docker attach ae60c4b64205连接到这个正在运行的终端,此时在Ctrl+C退出container就消失了,按ctrl-p ctrl-q可以退出到宿主机,而保持container仍然在运行
    另外,如果-d启动但后面的命令执行完就结束了,如/bin/bashecho test,则container做完该做的时候依然会终止。而且-d不能与--rm同时使用
    可以通过这种方式来运行memcached、apache等。

    5.3 映射host到container的端口和目录

    映射主机到容器的端口是很有用的,比如在container中运行memcached,端口为11211,运行容器的host可以连接container的 internel_ip:11211 访问,如果有从其他主机访问memcached需求那就可以通过-p选项,形如-p <host_port:contain_port>,存在以下几种写法:

    -p 11211:11211 这个即是默认情况下,绑定主机所有网卡(0.0.0.0)的11211端口到容器的11211端口上
    -p 127.0.0.1:11211:11211 只绑定localhost这个接口的11211端口
    -p 127.0.0.1::5000
    -p 127.0.0.1:80:8080
    

    目录映射其实是“绑定挂载”host的路径到container的目录,这对于内外传送文件比较方便,在搭建私服那一节,为了避免私服container停止以后保存的images不被删除,就要把提交的images保存到挂载的主机目录下。使用比较简单,-v <host_path:container_path>,绑定多个目录时再加-v

    -v /tmp/docker:/tmp/docker
    

    另外在两个container之间建立联系可用--link,详见高级部分或官方文档
    下面是一个例子:

    # docker run --name nginx_test \
    > -v /tmp/docker:/usr/share/nginx/html:ro \
    > -p 80:80 -d \
    > nginx:1.7.6
    

    在主机的/tmp/docker下建立index.html,就可以通过http://localhost:80/http://host-ip:80访问了。

    6. 将一个container固化为一个新的image(commit)

    当我们在制作自己的镜像的时候,会在container中安装一些工具、修改配置,如果不做commit保存起来,那么container停止以后再启动,这些更改就消失了。
    docker commit <container> [repo:tag]
    后面的repo:tag可选
    只能提交正在运行的container,即通过docker ps可以看见的容器,

    查看刚运行过的容器
    # docker ps -l
    CONTAINER ID   IMAGE     COMMAND      CREATED       STATUS        PORTS   NAMES
    c9fdf26326c9   nginx:1   nginx -g..   3 hours ago   Exited (0)..     nginx_test
    
    启动一个已存在的容器(run是从image新建容器后再启动),以下也可以使用docker start nginx_test代替  
    [root@hostname docker]# docker start c9fdf26326c9
    c9fdf26326c9
    
    
    docker run -i -t --sig-proxy=false 21ffe545748baf /bin/bash
    nginx服务没有启动
    
    
    # docker commit -m "some tools installed" fcbd0a5348ca seanlook/ubuntu:14.10_tutorial
    fe022762070b09866eaab47bc943ccb796e53f3f416abf3f2327481b446a9503
    

    -a "seanlook7@gmail.com"
    请注意,当你反复去commit一个容器的时候,每次都会得到一个新的IMAGE ID,假如后面的repository:tag没有变,通过docker images可以看到,之前提交的那份镜像的repository:tag就会变成<none>:<none>,所以尽量避免反复提交。
    另外,观察以下几点:

    • commit container只会pause住容器,这是为了保证容器文件系统的一致性,但不会stop。如果你要对这个容器继续做其他修改:
       
      • 你可以重新提交得到新image2,删除次新的image1
      • 也可以关闭容器用新image1启动,继续修改,提交image2后删除image1
      • 当然这样会很痛苦,所以一般是采用Dockerfilebuild得到最终image,参考[]
    • 虽然产生了一个新的image,并且你可以看到大小有100MB,但从commit过程很快就可以知道实际上它并没有独立占用100MB的硬盘空间,而只是在旧镜像的基础上修改,它们共享大部分公共的“片”。

    1. 开启/停止/重启container(start/stop/restart)

    容器可以通过run新建一个来运行,也可以重新start已经停止的container,但start不能够再指定容器启动时运行的指令,因为docker只能有一个前台进程。
    容器stop(或Ctrl+D)时,会在保存当前容器的状态之后退出,下次start时保有上次关闭时更改。而且每次进入attach进去的界面是一样的,与第一次run启动或commit提交的时刻相同。

    CONTAINER_ID=$(docker start <containner_id>)
    docker stop $CONTAINER_ID
    docker restart $CONTAINER_ID
    

    关于这几个命令可以通过一个完整的实例使用:docker如何创建一个运行后台进程的容器并同时提供shell终端

    2. 连接到正在运行中的container(attach)

    attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。
    官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。这不是我们想要的,detach的意思按理应该是脱离容器终端,但容器依然运行。好在attach是可以带上--sig-proxy=false来确保CTRL-DCTRL-C不会关闭容器。

    # docker attach --sig-proxy=false $CONTAINER_ID
    

    3. 查看image或container的底层信息(inspect)

    inspect的对象可以是image、运行中的container和停止的container。

    查看容器的内部IP
    # docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID
    172.17.42.35
    

    4. 删除一个或多个container、image(rm、rmi)

    你可能在使用过程中会buildcommit许多镜像,无用的镜像需要删除。但删除这些镜像是有一些条件的:

    • 同一个IMAGE ID可能会有多个TAG(可能还在不同的仓库),首先你要根据这些 image names 来删除标签,当删除最后一个tag的时候就会自动删除镜像;
    • 承上,如果要删除的多个IMAGE NAME在同一个REPOSITORY,可以通过docker rmi <image_id>来同时删除剩下的TAG;若在不同Repo则还是需要手动逐个删除TAG
    • 还存在由这个镜像启动的container时(即便已经停止),也无法删除镜像;

    TO-DO
    如何查看镜像与容器的依存关系

    删除容器
    docker rm <container_id/contaner_name>

    删除所有停止的容器
    docker rm $(docker ps -a -q)
    

    删除镜像
    docker rmi <image_id/image_name ...>
    下面是一个完整的示例:

    # docker images            <==
    ubuntu            13.10        195eb90b5349       4 months ago       184.6 MB
    ubuntu            saucy        195eb90b5349       4 months ago       184.6 MB
    seanlook/ubuntu   rm_test      195eb90b5349       4 months ago       184.6 MB
    
    使用195eb90b5349启动、停止一个容器后,删除这个镜像
    # docker rmi 195eb90b5349
    Error response from daemon: Conflict, cannot delete image 195eb90b5349 because it is 
    tagged in multiple repositories, use -f to force
    2014/11/04 14:19:00 Error: failed to remove one or more images
    
    删除seanlook仓库中的tag     <==
    # docker rmi seanlook/ubuntu:rm_test
    Untagged: seanlook/ubuntu:rm_test
    
    现在删除镜像,还会由于container的存在不能rmi
    # docker rmi 195eb90b5349
    Error response from daemon: Conflict, cannot delete 195eb90b5349 because the 
     container eef3648a6e77 is using it, use -f to force
    2014/11/04 14:24:15 Error: failed to remove one or more images
    
    先删除由这个镜像启动的容器    <==
    # docker rm eef3648a6e77
    
    删除镜像                    <==
    # docker rmi 195eb90b5349
    Deleted: 195eb90b534950d334188c3627f860fbdf898e224d8a0a11ec54ff453175e081
    Deleted: 209ea56fda6dc2fb013e4d1e40cb678b2af91d1b54a71529f7df0bd867adc961
    Deleted: 0f4aac48388f5d65a725ccf8e7caada42f136026c566528a5ee9b02467dac90a
    Deleted: fae16849ebe23b48f2bedcc08aaabd45408c62b531ffd8d3088592043d5e7364
    Deleted: f127542f0b6191e99bb015b672f5cf48fa79d974784ac8090b11aeac184eaaff
    

    注意,上面的删除过程我所举的例子比较特殊——镜像被tag在多个仓库,也有启动过的容器。按照<==指示的顺序进行即可。

    5. docker build 使用此配置生成新的image

    build命令可以从Dockerfile和上下文来创建镜像:
    docker build [OPTIONS] PATH | URL | -
    上面的PATHURL中的文件被称作上下文,build image的过程会先把这些文件传送到docker的服务端来进行的。
    如果PATH直接就是一个单独的Dockerfile文件则可以不需要上下文;如果URL是一个Git仓库地址,那么创建image的过程中会自动git clone一份到本机的临时目录,它就成为了本次build的上下文。无论指定的PATH是什么,Dockerfile是至关重要的,请参考Dockerfile Reference
    请看下面的例子:

    # cat Dockerfile 
    FROM seanlook/nginx:bash_vim
    EXPOSE 80
    ENTRYPOINT /usr/sbin/nginx -c /etc/nginx/nginx.conf && /bin/bash
    
    # docker build -t seanlook/nginx:bash_vim_Df .
    Sending build context to Docker daemon 73.45 MB
    Sending build context to Docker daemon 
    Step 0 : FROM seanlook/nginx:bash_vim
     ---> aa8516fa0bb7
    Step 1 : EXPOSE 80
     ---> Using cache
     ---> fece07e2b515
    Step 2 : ENTRYPOINT /usr/sbin/nginx -c /etc/nginx/nginx.conf && /bin/bash
     ---> Running in e08963fd5afb
     ---> d9bbd13f5066
    Removing intermediate container e08963fd5afb
    Successfully built d9bbd13f5066
    

    上面的PATH.,所以在当前目录下的所有文件(不包括.dockerignore中的)将会被tar打包并传送到docker daemon(一般在本机),从输出我们可以到Sending build context...,最后有个Removing intermediate container的过程,可以通过--rm=false来保留容器。
    TO-DO
    docker build github.com/creack/docker-firefox失败。

    6. 给镜像打上标签(tag)

    tag的作用主要有两点:一是为镜像起一个容易理解的名字,二是可以通过docker tag来重新指定镜像的仓库,这样在push时自动提交到仓库。

    将同一IMAGE_ID的所有tag,合并为一个新的
    # docker tag 195eb90b5349 seanlook/ubuntu:rm_test
    
    新建一个tag,保留旧的那条记录
    # docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag
    

    7. 查看容器的信息container(ps)

    docker ps命令可以查看容器的CONTAINER IDNAMEIMAGE NAME、端口开启及绑定、容器启动后执行的COMMNAD。经常通过ps来找到CONTAINER_ID
    docker ps 默认显示当前正在运行中的container
    docker ps -a 查看包括已经停止的所有容器
    docker ps -l 显示最新启动的一个容器(包括已停止的)

    8. 查看容器中正在运行的进程(top)

    容器运行时不一定有/bin/bash终端来交互执行top命令,查看container中正在运行的进程,况且还不一定有top命令,这是docker top <container_id/container_name>就很有用了。实际上在host上使用ps -ef|grep docker也可以看到一组类似的进程信息,把container里的进程看成是host上启动docker的子进程就对了。

    9. 其他命令

    docker还有一些如logincplogsexportimportloadkill等不是很常用的命令,比较简单,请参考官网。

     events、history和logs命令

    这3个命令用于查看Docker的系统日志信息。events命令会打印出实时的系统事件;history命令会打印出指定镜像的历史版本信息,即构建该镜像的每一层镜像的命令记录;logs命令会打印出容器中进程的运行日志。

    docker events [options] :从服务器获取实时事件。

    OPTIONS说明:

    • -f :根据条件过滤事件;

    • --since :从指定的时间戳后显示所有事件;

    • --until :流水时间显示到指定的时间为止;

     

    docker history [options] image:查看指定镜像的创建历史。

    OPTIONS说明:

    • -H :以可读的格式打印镜像大小和日期,默认为true;

    • --no-trunc :显示完整的提交记录;

    • -q :仅列出提交记录ID。

     

    docker logs [options] container

    Options:
            --details        显示更多的信息
        -f, --follow         跟踪日志输出,最后一行为当前时间戳的日志
            --since string   显示自具体某个时间或时间段的日志
            --tail string    从日志末尾显示多少行日志, 默认是all
        -t, --timestamps     显示时间戳

     示例1:

    docker logs   -t --since="2018-12-26 06:39:22" --until "2018-12-26 06:39:55" c-front

    示例2:

    docker logs --tail="10" mytest

     

    展开全文
  • Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金...

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

    Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案,使用Docker,开发和测试可以快速部署和迁移环境,并且能保证环境的一致性,从而提升软件的开发和维护效率。

    与虚拟机相比,docker有优点也有缺点,具体可以看下图:

    image-20210330134401535

    正好最近在部署环境,就把docker常用的操作和命令给大家做一个总结:

    docker进程相关命令

    systemctl start docker #启动docker服务

    systemctl stop docker #停止docker服务

    systemctl restart docker#重启docker服务

    systemctl status docker #查看docker服务状态

    systemctl enable docker#设置开机启动服务

    docker容器管理命令

    docker run --name={your_name} --d {image_name} # 运行容器

    参数说明:

    -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。

    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。

    -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。

    -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器

    --name:为创建的容器命名。

    docker ps # 查看正在运行的容器

    docker ps -s -a #查看当前所有容器

    docker stop容器名称  #停止容器

    docker restart 容器名称  #重启容器

    docker kill 容器名称 #杀死容器

    docker rm -f 镜像ID或者镜像名#删除已经停止的容器

    如果容器是运行状态则删除失败,需要停止容器才能删除

    docker镜像管理命令

    docker images #查看当前机器的所有镜像

    docker images –q # 查看所用镜像的id

    docker search 镜像名称 #搜索镜像,网络中查找需要的镜像

    docker pull 镜像名称 #从Docker仓库拉取镜像,名称:版本号

    docker push 镜像名称 #推送镜像

    docker rmi 镜像名称/镜像id #删除本地机器的镜像

    docker rmi docker images -q # 删除所有本地镜像

    docker tag 镜像名称:tag 镜像名称:tag #为一个镜像打tag

    docker save {image_name} > {new_image_name}.tar  #镜像打包成一个tar包

    docker load < {image_name}.tar  #解压一个镜像tar包

    docker查看日志信息

    docker logs -f 容器名称 #查看容器日志

    docker info #查看docker服务的信息

    docker inspect 容器名称 # 获取镜像的元信息,详细信息

    与容器交互的命令

    进入正在运行的容器

    docker exec -it 容器ID或者容器名 /bin/bash

    exec的意思是在容器中运行⼀个命令。/bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动 bash。

    退出容器

    exit #退出也关闭容器;

    Ctrl+P+Q #退出不关闭容器

    创建启动容器时,使用–v参数设置数据卷

    docker run ... –v 宿主机目录/文件:容器内目录/文件

    数据卷是宿主机的一个目录或文件

    目录必须是绝对路径

    如果目录不存在,会自动创建

    可以挂载多个数据卷

    拷贝文件

    docker cp 主机文件路径 容器ID或容器名:容器路径 #宿主机文件拷贝到容器中

    docker cp 容器ID或容器名:容器路径 主机文件路径 #容器文件拷贝到宿主机中

    整理不易,觉得有用,记得点个赞

    展开全文
  • 这个帮助有很大作用,比如忘记命令了,再比如那么多命令记混了,就要用帮助命令来助你一臂之力,看下面: sudo docker -h 获取镜像 从镜像仓库中拉取或者更新指定镜像。 都用上容器技术啦,那当然是要...

    目录

     

    查看帮助

    获取镜像

    查看镜像

    查看容器

    创建并运行容器

    启动容器、停止容器、重启容器

    删除容器

    删除镜像


    查看帮助

    这个帮助有很大作用,比如忘记命令了,再比如那么多命令记混了,就要用帮助命令来助你一臂之力,看下面:

    sudo docker -h

    获取镜像

    从镜像仓库中拉取或者更新指定镜像。

    都用上容器技术啦,那当然是要稳定快速的实现某个目的,对吧,首选官方镜像啊,那么官方镜像网址呢?

    是这个:https://hub.docker.com/ ,打开相对较慢,毕竟是跨区域了么。

    在上面的网址中获取需要的镜像名。

    就比如我要拉取ubuntu的18.04版本的镜像,如下命令:

    sudo docker pull ubuntu:18.04

    接下来就是等待,看你的网速了哟,快的话,也就眨下眼睛,看你能眨眼睛多慢,那么,慢的话,不要慌,先去倒杯茶,然后坐下来,你细细品……

    好了,我的电脑也就正常眨下眼睛就获取到了,不要问然后呢,然后在下面,继续。

    查看镜像

    这不,获取镜像了么,保险起见,我得先看看我的百宝箱里有没有这个宝贝啊。

    sudo docker images -a

    关于这个-a,我有话说:这个命令是列出本地所有的镜像,不加这个-a,那就看不到一些镜像过程了,这个将在后面说,现在用默认的就行,就是下面这个:

    sudo docker images

    用这个就好了,一般都是这个,后面需求大了,再多加些命令,这个也是最常用的,后面根据自己的实际情况再考虑更多的命令。

    有了这个镜像就像有了个毛坯房啦,然后就该装修入住啦。走着

    查看容器

    接下来就该搞定容器了,先看下都有哪些容器吧。

    sudo docker ps -a

    这个-a也是查看所有容器,在运行的容器和没有运行的容器都可以列出来,容器多了是不是显得眼花缭乱,一眼代码信息,凌乱,凌乱,找个信息有点难,不加-a,只显示在运行的容器,这样会好点哟。

    创建并运行容器

    看都看了,啥都没有,那么,我就来搞出来个容器。

    sudo docker run -itd --restart=always --name=ade-ubuntu18.04 ubuntu:18.04

    创建个容器并运行着,来,看下:

    启动容器、停止容器、重启容器

    有了容器,那么就来玩转容器啊,电脑都有开关,容器当然也有啊,而且命令很简单:

    停止一个容器:

    sudo docker stop 容器ID

    看下面的区别:

    启动一个容器:

    sudo docker start 容器ID

    再看下面的区别:

    重启一个容器:

    sudo docker restart 容器ID

    再再看下面的区别:

    到此呢,最最基本的docker命令已经熟悉了吧,那么下面的删除命令那用起来要谨慎谨慎再谨慎。

    删除容器

    这个容器删除啊,首先要确定是不需要的哟,避免误删导致搬起石头砸自己的jio哦。

    首先看删除容器 :

    sudo docker rm -f 容器ID

    看看下面的这个区别:

    再说一遍,删除的时候要特别谨慎啊。

    删除镜像

    镜像删除很重要哦,有可能是自己创建的基础镜像哟,不能白白浪费哟。

    再看下删除镜像:

    sudo docker rmi -f 镜像ID

    再看看下面的区别:

    这些呢,就是最最最最常用的docker命令啦,这些运用熟悉啦,就能继续深入的进行研究啦,详见后续更新哟!

     

    展开全文
  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器化部署已变...
  • Docker命令详解

    2021-12-13 14:48:12
    docker相关命令速查
  • docker命令行大全详解(更新中)

    万次阅读 多人点赞 2018-10-16 11:06:41
    本文是基于docker v18.03 稳定版基础来...docker命令集 命令 说明 容器生命周期管理 run 运行镜像 容器操作 容器文件系统操作 镜像仓库操作 镜像管理 其他命令 run命令 dockerd命令集 ...
  • docker 命令详解

    千次阅读 2020-12-19 11:22:19
    docker attach attach到一个运行中的容器[root@localhost ~]# docker attach --help //docker attach帮助Usage: docker attach [OPTIONS] CONTAINERAttach to a running container--help=false Print usage--no-...
  • Docker命令详解之run

    千次阅读 2020-12-23 00:16:02
    命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]意思为:通过run命令创建一个新的容器常用选项说明:-d, --detach=false, 指定容器运行于前台还是后台,默认为false-i, --interactive=false, 打开STDIN...
  • Docker安装以及常用Docker命令详解Docker安装以及常用Docker命令详解一、安装Docker二、配置Docker加速器三、Docker常用命令介绍1. Docker镜像操作(1)获取镜像(2)运行镜像(3)镜像的查看和删除查看:删除(4)...
  • Docker的常用命令大全

    千次阅读 2020-07-17 17:08:57
    Docker常用命令大全总结: ...`docker --help`:查看docker命令 2、操作docker镜像命令 2.1 查看镜像列表: ​ docker images 2.2 拉取镜像到本地: ​ docker pull 镜像名称或ID 2.3 上传镜像到仓
  • Docker命令及参数详解

    2021-07-17 09:18:38
    1. Docker命令行 ...首先,Docker命令清单可以通过运行docker,或者docker help命令得到: $ sudo dockerDocker容器技术不断演化的过程中,Docker的子命令已经达到34个之多,其中核心子命令(...
  • docker 基础知识 1,docker官网:https://www.docker.com 文档:https://docs.docker.com 仓库:https://hub.docker.com 2,名词解释 镜像(image):docker镜像就好比是 一个目标 ,可以通过这个 目标来创建 容器...
  • docker run命令用于运行一个新容器,而启动一个容器需要非常多的信息,所以该命令的参数非常多,今天就详细分析下该命令支持的参数。 首先看一下该命令的格式: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…...
  • docker images命令详解

    2021-02-24 14:52:50
    docker images [OPTIONS] [REPOSITORY[:TAG]] 2、常用选项 选项 描述 --all,-a 显示所有镜像(默认隐藏中间镜像) --digests 显示镜像的摘要 --filter,-f 根据条件对输出结果进行过滤 --format 格式...
  • Docker命令行详解

    2021-05-11 00:32:59
    【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现...
  • 下载镜像: docker pull 镜像名:标签 查看本地镜像: docker images 删除镜像: docker rmi 镜像名:...参数详解: --name: 设置容器的名称 -d: 后台运行 --restart: 开机自启项,默认为no -p 端口映射 宿主机的ip
  • 比如在一艘大船上要把各种 各样的货物要整理起来集装箱 (Docker) 就可以做到并且相互间不会影响就不需要指定 运输的船了 (这个船运吃的那个船运穿的 ) 只要把货物装在集装箱里封装好就可以用一艘 大船把他们都运走 1...
  • Docker Compose详解

    2021-10-17 18:15:43
    Docker Compose详解 一、Compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建...
  • Docker-compose 是用于定义和运行多容器 Docker 应用程序的编排工具。使用 docker-compose 后不再需要逐一创建和启动容器。您可以使用 YML 文件来配置应用...
  • dockercompose命令详解

    2021-07-28 14:32:30
    还需要提到的是Docker容器技术。虽然这个对于微服务并不是必须的,但是容器技术轻量级、灵活、与应用依存、屏蔽环境差异的特性对于持续交付的实现是至关重要的,即使对于传统的单体应用也能够给其带来交付效率的...
  • 作用创建一个新的容器并运行一个命令语法格式docker run [OPTIONS] IMAGE [COMMAND] [ARG...]备注:其实跟docker create一样的语法格式,只不过可以运行容器甚至进入容器内部COMMAND :需要在容器内执行的命令...
  • 一些操作都需要root权限操作,从用户角色转换到root角色命令:sudo su 启动docker服务:service docker start (docker所有的操作,都是基于启动docker服务,不然会报:Cannot connect to the Docker da...
  • Docker 命令详解 命令示例

    万次阅读 2014-12-03 21:17:24
    Docker命令: attach commit diff export history import insert kill login port  pull restart rmi save start tag version build cp events  he
  • docker run命令详解

    2021-06-16 15:38:14
    简介: 创建容器常用选项说明 docker run [OPTIONS] 容器id/容器名称 /bin/bash #docker创建容器命令 OPTIONS 描述 -d, --detach=false 指定容器运行于前台还是后台 -i, --interactive=false 打开STDIN,. ...
  • Docker常用命令详解

    2021-05-12 15:15:27
    帮助命令 #显示dcoker的版本信息 ...docker 命令 --help 镜像命令 docker images查看所有本地的主机上的镜像 [root@practice ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,742
精华内容 6,696
关键字:

docker命令详解大全