Docker 常用管理命令——上

来源:互联网 发布:网络七层协议工作原理 编辑:程序博客网 时间:2024/05/16 17:19

原文:http://seanlook.com/2014/10/31/docker-command-best-use-1/

生命周期管理

runstartstoprestartkillrmpauseunparse

操作运维

psinspecttopattacheventslogswaitexportport

rootfs命令

commitcpdiff

镜像仓库

loginpullpushsearch

本地镜像管理

imagesrmitagbuildhistotysaveimport

其他命令

infoversion

具体介绍

列出机器上的所有镜像

huzi@huohai:~$ sudo docker images #  不带'/'的包是系统自带的,带'/'的是个人的REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEvimagick/scrapyd    latest              5f29846ca174        2 days ago          319.6 MBubuntu              16.04               4ca3a192ff2a        9 days ago          128.2 MBaciobanu/scrapy     latest              94668c23e75d        7 weeks ago         205.3 MBhello-world         latest              c54a2cc56cbb        5 months ago        1.848 kB

在docker index中搜索image

huzi@huohai:~$ sudo docker search scrapy #  scrapy是想要搜索镜像的名字NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDvimagick/scrapyd                            An open source and collaborative framework...   26                   [OK]trcook/docker-scrapy                        dockerized scrapy built on alpine linux.        8                    [OK]aciobanu/scrapy                             An open source and collaborative framework...   6                    [OK]rickl/docker-scrapy                         Minimal Docker Scrapy image based on Alpin...   4                    [OK]tarhan/scrapy-base                          Base Docker image for Scrapy projects with...   1                    [OK]allanfann/scrapy                                                                            1                    [OK]wuchang/docker-scrapy                       docker-scrapy                                   1                    [OK]

从docker registry server 下载镜像

huzi@huohai:~$ sudo docker pull scrapy #  最好查找好指定的镜像名字,一般找到镜像都有pull方法Using default tag: latest从image启动一个containerUsage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]'docker run '创建容器的时候,Docker在后台运行的标准操作包括: 1. 检查本地是否存在指定的镜像,不存在就从共有仓库下载 2. 利用镜像创建并启动一个容器 3. 分配一个文件系统,并在只读的镜像层外面挂在一层可读写层 4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 5. 从地址池配置一个ip地址给容器 6. 执行用户指定的应用程序 7. 执行完毕后容器被终止

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

huzi@huohai:~$ sudo docker run vimagick/scrapyd echo "天黑了"天黑了'实际上这行做的操作是启动一个容器,执行'echo'命令,可以用 'sudo docker ps -l'来查看'huzi@huohai:~$ sudo docker ps -lCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES84f85d0f0ddf        vimagick/scrapyd    "echo 天黑了"          29 seconds ago      Exited (0) 28 seconds ago                       elated_noether

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

huzi@huohai:~$ sudo docker run -i -t --name first_container vimagick/scrapyd /bin/bashroot@2420f0497140:/# apt install python-dev'--name' '参数指定启动后的容器名字,如果不指定,docker会帮我们指定一个,注意最后的NAMES,是我们指定的名字'huzi@huohai:~$ sudo docker ps -a CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES2420f0497140        vimagick/scrapyd    "/bin/bash"         3 minutes ago       Up 3 minutes               6800/tcp            first_container84f85d0f0ddf        vimagick/scrapyd    "echo 天黑了"          6 minutes ago       Exited (0) 6 minutes ago                       elated_noether用'docker logs +容器ID '可以看到输出huzi@huohai:~$ sudo docker logs 69e29e077067/bin/sh: 1: While: not foundhello world

将一个container固化为一个新的image,通过commit,在pymsql执行完excute后也要执行commit

docker commit <container> [repo:tag] '后面的[]是可选项,但是缺了的话会是<None> repo是你image的名字,tag是你TAG的名字'
huzi@huohai:~$ sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE<none>              <none>              f84d9dc13795        8 seconds ago       319.6 MBvimagick/scrapyd    latest              5f29846ca174        2 days ago          319.6 MBubuntu              16.04               4ca3a192ff2a        9 days ago          128.2 MB###huzi@huohai:~$ sudo docker commit big_euler [your_container_name:tag_name] sha256:f84d9dc13795f5703c04574472efdb879fe70e2d2cdc0bfbb87e9ee8745fe39d
请注意,当你反复去commit一个容器的时候,每次都会得到一个新的IMAGE ID,假如后面的repository:tag没有变,通过docker images可以看到,之前提交的那份镜像的repository:tag就会变成<none>:<none>,所以尽量避免反复提交。另外,观察以下几点:commit container只会pause住容器,这是为了保证容器文件系统的一致性,但不会stop。如果你要对这个容器继续做其他修改:你可以重新提交得到新image2,删除次新的image1也可以关闭容器用新image1启动,继续修改,提交image2后删除image1当然这样会很痛苦,所以一般是采用Dockerfile来build得到最终image,参考[]虽然产生了一个新的image,并且你可以看到大小有100MB,但从commit过程很快就可以知道实际上它并没有独立占用100MB的硬盘空间,而只是在旧镜像的基础上修改,它们共享大部分公共的“片”。
0 0
原创粉丝点击