docker 常用笔记
pull:下载镜像
docker pull image
ps:查看运行容器
docker ps
-a : 查看全部包括停止
commit:创建镜像
docker commit [repo] xxxname:tag
docker container commit -m "Add a new image" -a "lipengfei" 90cedf2ee4fe test:0.1
创建一名称为 test,tag为0.1 的镜像,容器id为90.....4fe
save:导出镜像
create/run : 创建/运行容器
-i:绑定输入
-t:伪终端
-d:后台运行(守护状态)
--rm 容器在终止后会立即删除
--name 别名
exec:运行交互页面
docker exec -it c3d277625d18 /bin/bash
exit: 退出交互页面
docker save -o /home/test/test.tar test:0.1
load:载入本地镜像
docker load -i /home/test/test.tar
push:上传
如果要分享可以push 一下,默认为官网的dockerhub,需要注册。
docker push [image]
容器:
pause/unpause:暂停容器
(子命令)stop/start/restart:停止/启动/重启
(子命令)prune:删除处于停止状态的容器
kill:强制关闭
rm:删除
-f 强制删除
-v 删除挂载的数据卷
容器导入导出:(*)迁移系统
export/import:
docker export -o xxxx.tar [container]
导入容器其实是导入镜像,可以给定标签
docker import xxxx.tar - [image-name]
stats:查看容器统计信息
docker stats
container cp:复制文件到容器目录下
docker container cp test.tar ub:/tmp/
port:端口映射
docker container port ub
dockerhub 仓库:官方很慢,网速可以的去官网
国内镜像:
阿里云、腾讯云
数据管理:
数据卷:创建
docker volume create test
-d 数据驱动,默认为local
数据卷容器:(推荐)
多个容器挂载数据卷容器,可以挂载多个数据卷
1.运行容器,创建一个dbdata数据卷
docker run -it -v /dbdata --name dbdata ubuntu
2.创建第二个容器,挂载数据卷容器的数据卷
docker run -it --volume-from dbdata --name db1 ubuntu
此时在任意容器中修改此数据卷信息,其他容器都可见。
删除数据卷:
docker rm -v XXX
备份数据卷:
docker run --name backupworker --volumes-from dbdata -v $PWD:/backup ubuntu tar cvf /backup/backup.tar /dbdata
分步骤看
1、run -name backupworker 创建一个ubuntu 容器
2、数据卷来自数据卷容器 dbdata
3、-v $pwd:/backup :绑定宿主机当前目录到容器根目录下文件夹 /backup
4、tar cvf /backup/backup.tar /dbdata :容器运行后执行此命令打包挂载的目录 /dbdata ,也就是之间的容器数据卷中的 /dbdata
5、此时因为容器的挂载了dbdata,所以在跟目录下同样会有一个 dbdata目录,同时把挂载的目录打包丢到根 backup 目录下,然后由于数据卷映射到宿主机当前目录下,所以backup 目录下的文件同样会保存到宿主机当前目录下。
端口映射:容器服务端口映射到主机的端口、ip
docker run -p [IP]8080:8000 -d xxxxx --name xxxxx
ip映射端口随机(双冒号)
docker run -p 127.0.0.0::5000 xxxxx
查看端口号:docker port xxxx
查看统计信息:docker stats xxxx
容器互联:
--link
docker run --link name:alias xxxx
查看日志:
sudo docker logs -f -t --tail 行数 容器名
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID