最近在搞devops,服务docker化,在这里记录一下常用的docker相关的命令~
有不对的地方,请大家指正,谢谢~
持续更新中~
基于我自己对docker的理解简单介绍一下docker的概念:
docker简单来说就是新一代的虚拟机,主要有三个概念:
1.仓库,仓库的作用是存储docker镜像,有公共仓库和私有仓库。
2.镜像,可以理解为windows的安装镜像,我理解为一种静态资源。
3.容器,可以理解windows系统,是动态的资源,提供了一种虚拟机服务。
镜像根据dockerfile来制作,dockerfile是制作镜像的规约,需要我们根据业务需要进行编写。
容器基于制作完成的镜像运行,和宿主机进行端口关联,提供相关的服务供外部访问。
查看本地镜像:
docker images 参数-a 列出本地所有镜像
删除镜像
docker rmi +镜像名/镜像ID 参数-f 表示强制删除
(仅使用docker rmi删除镜像时可能会提示你该镜像关联了容器,请先删除容器)
给镜像打tag
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
示例:给nginx镜像打tag,tag号V1,并且关联到镜像仓库regi.sod.com,仓库用户名dev
docker tag nginx regi.sdo.com/dev:V1
根据dockerfile生成镜像
docker build -f + dockerfile的文件路径 常用参数-m:指定内存大小 --tag:指定镜像的标签
查看镜像创建历史
docker history +镜像名/镜像ID
运行一个容器
基本语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数说明:
-t: 为容器重新分配一个输入终端。
-d: 后台运行容器。
-p: 端口映射,格式为:宿主机端口:容器端口
-i: 以交互模式运行容器。
--name="某某某": 为容器指定一个名称
--expose=[]: 开放一个端口或一组端口;
示例:基于镜像nginx:20180926V1运行一个容器,以交互模式启动,后台运行容器,并且在容器内执行/bin/bash命令(镜像nginx:20180926V1的基础镜像是centos 7)
docker run -dit nginx:20180926V1 /bin/bash
运行完毕之后使用docker exec命令进入该容器,我们看到的是一个标准的linux界面,可以输入linux命令进行相关操作。
这个命令在不引入k8s的情况下是比较常用的。
容器启/停/重启
启动:docker start 容器名字/容器ID
停止:docker stop 容器名字/容器ID
重启:docker restart 容器名字/容器ID
杀容器:
docker kill 容器名字/容器ID
删除容器
docker rm 容器名字/容器ID
参数说明:
-f 强制删除容器
-l 移除容器之间的网络连接,不删除容器
暂停容器中的服务
docker pause 暂停容器中所有进程
docker unpause 恢复容器中的所有进程
仅创建容器
docker create
示例:仅创建基于镜像nginx:20180926的容器,名字叫nginxRunning,但是不启动该容器
docker create --name myrunoob nginx:20180926
在运行的容器中执行命令
实际使用中存在进入容器进行相关操作的需求
Docker exec
参数说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
示例:
①分离模式执行容器内的脚本
docker exec -d 容器名/容器ID /bin/sh /app/start.sh
②交互模式进入运行中的容器
docker exec -it 容器名/容器ID /bin/bash
显示容器列表
docker ps 参数-a表示列出所有容器,包括未运行的容器
获取运行中容器的进程信息
docker top 容器名/容器ID
连接到正在运行的容器
docker attach 容器名/容器ID
获取容器的日志
docker logs 容器名/容器ID
参数介绍:
-f : 跟踪日志输出
--tail=N :仅列出最新N条容器日志
文件归档
Docker export 容器名/容器ID
参数-o表示将输入内容写入文件
示例
docker export -o nginx.tar ca09a0p362t2(末尾是容器ID)
表示将ID为ca09a0p362t2的容器的文件系统保存为nginx.tar
列出指定容器的端口映射
docker port 容器名/容器ID
登陆到镜像仓库
docker login -u 用户名 -p 密码 仓库地址
登出:
docker logout 仓库地址
拉取镜像
docker pull 镜像名
推送本地镜像到镜像仓库
注意:需要先登录到相应的镜像仓库
docker push 镜像名:tag版本号
示例
docker push nginx:0926V1
即推送本地镜像nginx tag号0926V1到镜像仓库
从Docker Hub查找镜像
docker search 镜像名