Docker小结(一)docker架构及常用命令

14年左右最早接触过docker,当时在ubuntu系统中只简单的运行过几个命令稍略测试过。在红帽RHCA中有DO280课程(红帽DIY 的 docker + k8s + etcd + haproxy组合产品),趁着学习DO280课程的机会 ,做下DOCKer内容的小结,本篇先从docker架构开始说起。

一、docker架构和常用命令

在开始之前,先简单的看下docker的架构图,如下:

docker

docker的常用命令如下

容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]

二、命令执行

1、images镜象

这里先从国内的163镜像源下载一个image镜像,查看并运行该镜像,使期产生一个容器:

[root@localhost docker]# docker pull hub.c.163.com/public/centos:7.2.1511   //从国内163源拉取一个docker镜像
[root@localhost centos7]# docker images   //查看现有镜像
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB
[root@localhost centos7]# docker run -i -t 84352c4ff678 /bin/bash   //使用刚刚的镜像运行一个容器
[root@81adc321fd6c /]# ps auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  1.3  0.0  11768  1876 ?        Ss   03:13   0:00 /bin/bash
root        17  0.0  0.0  35880  1436 ?        R+   03:13   0:00 ps auxf

2、commit image

在该容器内执行了一系统操作后,可以将该container 重新commit 为一个新的image,如下:

[root@localhost centos7]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
dc27fe50bb80        84352c4ff678        "/bin/bash"         About an hour ago   Up About an hour    22/tcp              gloomy_hugle
[root@localhost centos7]# docker commit -m "some tools installed" dc27fe50bb80  361way/centos:7.2
sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
[root@localhost centos7]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
361way/centos                 7.2                 5a3a8963b1e8        6 seconds ago       570.5 MB
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB

请注意,当你反复去commit一个容器的时候,每次都会得到一个新的IMAGE ID,假如后面的repository:tag没有变,通过docker images可以看到,之前提交的那份镜像的repository:tag就会变成none:none,所以尽量避免反复提交。

3、 save、load、tag与images

使用docker save可以将当前的images备份成一个tar文件,方便在其他主机上通过load载入,使用tag可以修改对应的标签。具体用法可以 man  docker-save 、man docker-load、man docker-tag进行查看。示例如下:

[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
361way/centos                 7.2                 5a3a8963b1e8        8 minutes ago       570.5 MB
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# docker save 5a3a8963b1e8  -o 361way.tar
[root@localhost ~]# docker save 5a3a8963b1e8 > 361way.tar   //也可以使用重定向的方向
[root@localhost ~]# docker save --output=centos-latest.tar 361way/centos:7.2 //也可以tag标签进行save
[root@localhost ~]# ls
361way.tar  anaconda-ks.cfg  docker-training
[root@localhost ~]# docker rmi 5a3a8963b1e8
Untagged: 361way/centos:7.2
Deleted: sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
Deleted: sha256:bda71a8e48dc76fa11fd32d22687e48bf0a66425e4dde0d5386712bfde6a1b0e
[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB
[root@localhost ~]# docker load -i 361way.tar.gz
1dfed3279435: Loading layer [==================================================>] 220.9 MB/220.9 MB
Loaded image ID: sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
[root@localhost ~]# docker images   //可以看到刚刚导入的images没有tag标签
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
<none>                        <none>              5a3a8963b1e8        10 minutes ago      570.5 MB
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB
[root@localhost tmp]# docker tag 5a3a8963b1e8 361way/centos:latest
[root@localhost ~]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
361way/centos                 latest              5a3a8963b1e8        8 minutes ago       570.5 MB
hub.c.163.com/public/centos   7.2.1511            84352c4ff678        7 months ago        355.7 MB

4、容器相关命令

容器相关的常用参数有docker run 、ps 、attach、log、commit、rm、inspect 。其中docker run -i -t  “image id”  命令,会将一个imager作为容器运行起来;ps用于查看当前活动的所有容器,其经常和其他参数配合使用:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
dc27fe50bb80        84352c4ff678        "/bin/bash"         4 hours ago         Up 10 minutes       22/tcp              gloomy_hugle
[root@localhost ~]# docker ps -a -q
dc27fe50bb80
[root@localhost ~]# docker rm -f $(docker ps -a -q)  //删除所有容器

attach主要是连接上当前正常在运行的容器;log命令用于打印容器运行中所产生的所有日志;commit用于将一个容器重新提交成images文件;inspect命令用于查看容器或images的属性信息,这里比如提取某个容器的IP信息的命令如下:

[root@localhost ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' dc27fe50bb80
172.17.0.2

如果不加任何格式过滤(后面直接跟容器id或images id),会打印出所有的容器或images信息。

docker相关的命令这里先写这么多,因为docker所有的参数命令都可以通过man docker-参数 的方式获取帮助信息 。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.