docker学习

时间:2022-08-02 01:23:18

Docker时一个客户端/服务器(C/S)架构的程序,Docker客户端向Docker服务器或守护进程发出请求,Docker守护进程也称为Docker引擎
docker是Docker提供的一个命令行工具,用户可以使用docker或者restful api与Docker守护进程交互,用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程

docker镜像和容器
镜像是Docker生命周期中的构建或打包(docker build)阶段,容器是启动或执行阶段

docker使用

docker run命令
-i参数:保证容器的stdin是开启的,交互式shell的前提条件
-t参数:分配一个伪tty终端
如:

docker run -it ubuntu /bin/bash

docker ps -a查看所有容器

–name指定容器名
-d参数:指定容器在后台运行,即守护式容器
-p参数:指定容器端口和宿主机端口,如-p 8080:80,表示将容器80端口映射到宿主机8080端口

docker logs 容器名/id:查看容器日志信息
-f参数:与tail -f用法类似
-t参数:为日志加上时间戳

查看容器内进程:docker top 容器名/id
查看容器资源统计信息:docker stats 容器名/id

docker exec命令:在容器内启动新的进程,在容器内运行的进程有两类:
后台进程:没有交互需求
交互式进程:保持着在前台运行
如:

docker exec -d 容器名 命令内容

-d参数表示后台运行

docker stop 容器名/id:重启容器

自动重启容器可以在run命令中加上–restart参数,如

docker run --restart=always --name 指定名称 -d 容器名/id

–restart参数值:always表示无论容器退出码是什么,都重启容器,on-failure表示容器退出码为非0时重启容器,还可以加上重启次数

docker run --restart=on-failure:5 --name 指定名称 -d 容器名/id

查看容器详细信息:docker inspect 容器名/id
-f或者–format参数可以选择查看的结果

docker inspect --format='{{.Name}} {{.state.Running}}' 容器名/id

删除容器:docker rm 容器名/id,删除前需要docker stop/kill来停止容器
-f参数可以删除正在运行中的容器

docker镜像

docker images:列出镜像
docker pull 镜像名:拉取镜像
docker login:登录镜像仓库

docker commit 容器名/id 镜像仓库名/镜像名:提交构建镜像

docker commit -m'测试' -a'admin' 容器名 镜像仓库名/镜像名

-m参数指定镜像提交信息,-a参数指定构建镜像作者名

可以使用Dockerfile文件构建docker镜像,编写完成Dockerfile文件后,执行docker build命令,Dockerfile文件里的指令都会被执行并且提交,然后返回一个新镜像,如

docker build -t='镜像仓库/镜像名' .

-t参数指定镜像仓库和镜像名,.表示在当前目录下查找Dockerfile文件,即以当前目录下的文件为上下文构建镜像

如果在构建过程中某一步执行出错,导致构建失败,我们可以基于已经成功构建的最后一步的镜像使用docker run创建一个容器,然后执行出错的指令,调试构建

查看构建过程:docker history 镜像名

查看容器端口映射情况:docker port 容器名/id 端口号

docker port test 80
0.0.0.0:22010

返回宿主机的映射端口

docker run可以使用-p参数,将容器端口映射到宿主机指定端口上

docker run -d -p 8080:80 ubuntu

-p参数将容器的80端口映射到宿主机的8080端口

推送镜像:docker push 仓库名/镜像名

删除镜像:docker rmi 镜像名