读书笔记,持续更新
核心概念
- 镜像
类似虚拟机镜像,通常包含一个基本的操作系统环境。 - 容器
类似于一个轻量级沙箱,docker利用容器来运行和隔离应用。 - 仓库
docker仓库类似于代码仓库,集中存放镜像文件。
安装
Docker目前只支持64位平台
Mac
brew一把梭简单粗暴
brew install docker
Ubuntu
系统信息
Ubuntu 18.04
Linux VM-0-3-ubuntu 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
安装命令
sudo apt-get install -y apt-transport-https
用官方自动脚本
sudo curl -sSL https://get.docker.com/ | sh
看下安装结果
配置服务
每次都要加sudo很麻烦
添加用户组
sudo usermod -aG docker ubuntu
管理服务:
sudo systemctl start docker.service
wget -qO- https://get.docker.com/ | sh
Docker镜像
DockerHub
常用命令
docker pull 获取镜像
-a 获取所有
docker images 列出镜像
-a 列出所有
--digests 列处数字摘要
-f 过滤
--no-trunc 截断 默认为是
docker tag 添加标签
docker inspect 查看详细信息
docker history 查看镜像历史
docker search 搜索镜像
--automated 仅显示自动创建的
--no-trunc 输出不截断
-s 筛选评价星级
docker rmi 删除镜像
docker load 加载镜像
docker load --input demo.rar
docker load < demo.rar
docker push 上传镜像
获取镜像:docker pull NAME[:TAG]
搜索镜像:docker search NAME
镜像的ID唯一标识镜像。可用ID前若干个字符替代完整ID。
docker inspect
查看详细信息
创建镜像
基于已有镜像的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a, --author="":作者信息
-c, --change=[]:提交的时候执行Dockerfile命令
-m, --message="":提交消息
-p, --pause=true:提交时暂停容器运行
容器操作
创建容器
docker create
创建后用docker start启动。
也可以直接新建并启动
docker run ubuntu /bin/echo 'hello world'
启动终端
docker run -it ubuntu:14.04 /bin/bash
常见错误代码:
- 125:docker daemon执行出错
- 126:指定命令无法执行,如权限问题
- 127:容器内命令无法找到
守护态运行
参数 -d
docker logs
获取输出信息
端口映射
-P
:是容器内部端口随机映射到主机的高端口。
-p
: 是容器内部端口绑定到指定的主机端口。
终止容器
docker stop
也可用exit
或ctrl+D
退出容器终端同时终止容器
进入容器
attach
不方便 很少用
docker attach [--detach-keys][--no-stadin][--sig-proxy] CONTAINER
exec
docker exec -it CONTAINER /bin/bash
nsenter
之前用这个方法tcpdump抓docker的流量
docker ps | grep xxx 获取容器id/name
docker inspect --format "{{.State.Pid}}" container_id/name 获取PID
nsenter -n -t container_id/name 使用nsenter切换网络命名空间
tcpdump -i eth0 -w xxx.pcap
删除容器
docker ps -a
查看处于终止状态的容器
使用docker rm
删除,并不能删除正在运行的容器
可以加-f
参数强行删除
导入导出容器
参考
《Docker技术入门与实战》