Docker小结(一)docker架构及常用命令
14年左右最早接触过docker,当时在ubuntu系统中只简单的运行过几个命令稍略测试过。在红帽RHCA中有DO280课程(红帽DIY 的 docker + k8s + etcd + haproxy组合产品),趁着学习DO280课程的机会 ,做下DOCKer内容的小结,本篇先从docker架构开始说起。
一、docker架构和常用命令
在开始之前,先简单的看下docker的架构图,如下:
docker的常用命令如下:
1容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
2容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
3容器rootfs命令 — docker [commit|cp|diff]
4镜像仓库 — docker [login|pull|push|search]
5本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
6其他命令 — docker [info|version]
二、命令执行
1、images镜象
这里先从国内的163镜像源下载一个image镜像,查看并运行该镜像,使期产生一个容器:
1[root@localhost docker]# docker pull hub.c.163.com/public/centos:7.2.1511 //从国内163源拉取一个docker镜像
2[root@localhost centos7]# docker images //查看现有镜像
3REPOSITORY TAG IMAGE ID CREATED SIZE
4hub.c.163.com/public/centos 7.2.1511 84352c4ff678 7 months ago 355.7 MB
5[root@localhost centos7]# docker run -i -t 84352c4ff678 /bin/bash //使用刚刚的镜像运行一个容器
6[root@81adc321fd6c /]# ps auxf
7USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
8root 1 1.3 0.0 11768 1876 ? Ss 03:13 0:00 /bin/bash
9root 17 0.0 0.0 35880 1436 ? R+ 03:13 0:00 ps auxf
2、commit image
在该容器内执行了一系统操作后,可以将该container 重新commit 为一个新的image,如下:
1[root@localhost centos7]# docker ps
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dc27fe50bb80 84352c4ff678 "/bin/bash" About an hour ago Up About an hour 22/tcp gloomy_hugle
4[root@localhost centos7]# docker commit -m "some tools installed" dc27fe50bb80 361way/centos:7.2
5sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
6[root@localhost centos7]# docker images
7REPOSITORY TAG IMAGE ID CREATED SIZE
8361way/centos 7.2 5a3a8963b1e8 6 seconds ago 570.5 MB
9hub.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进行查看。示例如下:
1[root@localhost ~]# docker images
2REPOSITORY TAG IMAGE ID CREATED SIZE
3361way/centos 7.2 5a3a8963b1e8 8 minutes ago 570.5 MB
4hub.c.163.com/public/centos 7.2.1511 84352c4ff678 7 months ago 355.7 MB
5[root@localhost ~]#
6[root@localhost ~]#
7[root@localhost ~]# docker save 5a3a8963b1e8 -o 361way.tar
8[root@localhost ~]# docker save 5a3a8963b1e8 > 361way.tar //也可以使用重定向的方向
9[root@localhost ~]# docker save --output=centos-latest.tar 361way/centos:7.2 //也可以tag标签进行save
10[root@localhost ~]# ls
11361way.tar anaconda-ks.cfg docker-training
12[root@localhost ~]# docker rmi 5a3a8963b1e8
13Untagged: 361way/centos:7.2
14Deleted: sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
15Deleted: sha256:bda71a8e48dc76fa11fd32d22687e48bf0a66425e4dde0d5386712bfde6a1b0e
16[root@localhost ~]# docker images
17REPOSITORY TAG IMAGE ID CREATED SIZE
18hub.c.163.com/public/centos 7.2.1511 84352c4ff678 7 months ago 355.7 MB
19[root@localhost ~]# docker load -i 361way.tar.gz
201dfed3279435: Loading layer [==================================================>] 220.9 MB/220.9 MB
21Loaded image ID: sha256:5a3a8963b1e8a575d860ca3e32dbbccab0138dc70da065700eef2a90659eed2c
22[root@localhost ~]# docker images //可以看到刚刚导入的images没有tag标签
23REPOSITORY TAG IMAGE ID CREATED SIZE
24<none> <none> 5a3a8963b1e8 10 minutes ago 570.5 MB
25hub.c.163.com/public/centos 7.2.1511 84352c4ff678 7 months ago 355.7 MB
26[root@localhost tmp]# docker tag 5a3a8963b1e8 361way/centos:latest
27[root@localhost ~]# docker images
28REPOSITORY TAG IMAGE ID CREATED SIZE
29361way/centos latest 5a3a8963b1e8 8 minutes ago 570.5 MB
30hub.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用于查看当前活动的所有容器,其经常和其他参数配合使用:
1[root@localhost ~]# docker ps
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dc27fe50bb80 84352c4ff678 "/bin/bash" 4 hours ago Up 10 minutes 22/tcp gloomy_hugle
4[root@localhost ~]# docker ps -a -q
5dc27fe50bb80
6[root@localhost ~]# docker rm -f $(docker ps -a -q) //删除所有容器
attach主要是连接上当前正常在运行的容器;log命令用于打印容器运行中所产生的所有日志;commit用于将一个容器重新提交成images文件;inspect命令用于查看容器或images的属性信息,这里比如提取某个容器的IP信息的命令如下:
1[root@localhost ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' dc27fe50bb80
2172.17.0.2
如果不加任何格式过滤(后面直接跟容器id或images id),会打印出所有的容器或images信息。docker相关的命令这里先写这么多,因为docker所有的参数命令都可以通过man docker-参数 的方式获取帮助信息 。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/docker-command/5455.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.