Docker基础

一、容器概念

  • Linux六大名称空间
UTS	主机名和域名
IPC	信号量、消息队列和共享内存
PID	进程编号
Network	网络设备、网线栈、端口等
Mount	挂载点(文件系统)
User	用户和用户组,内核3.8支持
  • Control Group(cgroups)
blkio	块设备IO
cpu	cpu
cpuacct	cpu资源使用报告
cpuset	多处理器平台上的CPU集合
devices	设备访问
freezer	挂起或恢复任务
memory	内存用量及报告
perf_event	对cgroup中的任务进行统一性能测试
net_cls	cgroup中的任务创建的数据报文的类别标识符
  • 容器核心技术
chroot
namespace
cgroups
  • Docker容器引擎:LXC --> libcontainer --> runC
  • Docker Daemon:Docker server端,默认只提供socket文件接入
  • Registry:镜像仓库,默认通信协议HTTPS
  • Containers:容器
  • Images:镜像

二、Docker安装

  • 基础环境
64 bits CPU
kernel-3.10+
  • 安装
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum makecache fast
# yum list docker-ce.x86_64 --showduplicates | sort -r
# yum install https://mirrors.aliyun.com/centos-vault/7.3.1611/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm
# yum install docker-ce-18.06.0.ce-3.el7 -y 
  • 配置镜像加速(以阿里云为例)
# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]  #加速地址登录阿里云后在容器镜像服务中获取
}
EOF
# systemctl daemon-reload
# systemctl start docker
# systemctl enable docker.service
  • 配置Unix Socket监听
# vim /etc/docker/daemon.json
{
  "hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]
}
# systemctl restart docker
# docker -H 192.168.100.9:2375 ps  #客户端使用tcp连接
  • 修改docker0网桥的IP信息
# vim /etc/docker/daemon.json
{
  "bip": "10.0.0.254/16",
  "fixed-cidr": "10.0.0.0/16",
  "mtu": 1500,
  "default-gateway": "10.0.0.1",
  "dns": ["114.114.114.114","8.8.8.8"]
}
  • 创建自定义桥
# docker network create --driver bridge --subnet "172.27.0.0/16" --gateway "172.27.0.1" docker1
# docker network ls
# ip link set br-0a9309aaa170 down
# ip link set br-0a9309aaa170 name docker1  #修改接口名字
# ip link set docker1 up
# docker network rm docker1  #删除网桥
  • 验证
# docker info
# docker version
  • 启动一个容器
# docker pull centos
# docker run --name d1 -it centos:latest
# docker start -ai 64d96be72c59  #再次进入容器
  • 启动一个nginx容器
# docker run --name web1 -d nginx:1.14
# docker inspect e75cfa7018ce |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
# curl 172.17.0.2

三、Docker Client命令

  • 常见用法(旧)
attach      	将本地标准输入,输出和错误流附加到正在运行的容器
build       	从Dockerfile构建映像
commit      	根据容器的更改创建新图像
cp          	在容器和本地文件系统之间复制文件/文件夹
create      	创建一个新容器
diff        	检查容器文件系统上文件或目录的更改
events      	从服务器获取实时事件
exec        	在正在运行的容器中运行命令
export      	将容器的文件系统导出为tar存档
history     	显示图像的历史记录
images      	列出图像
import      	从tarball导入内容以创建文件系统映像
info        	显示系统范围的信息
inspect     	返回有关Docker对象的低级信息
kill        	杀死一个或多个正在运行的容器
load        	从tar存档或STDIN加载图像
login       	登录Docker注册表
logout      	从Docker注册表注销
logs        	获取容器的日志
pause       	暂停一个或多个容器中的所有进程
port        	列出端口映射或容器的特定映射
ps          	列出容器
pull        	从docker仓库中拉取镜像
push        	将图像或存储库推送到注册表
rename      	重命名容器
restart     	重新启动一个或多个容器
rm          	删除一个或多个容器
rmi         	删除一个或多个图像
run         	在新容器中运行命令
save        	将一个或多个图像保存到tar存档(默认情况下流式传输到STDOUT)
search      	在Docker Hub中搜索图像
start       	启动一个或多个已停止的容器
stats       	显示容器资源使用情况统计信息的实时流
stop        	停止一个或多个正在运行的容器
tag         	创建一个引用SOURCE_IMAGE的标记TARGET_IMAGE
top         	显示容器的运行进程
unpause     	取消暂停一个或多个容器中的所有进程
update      	更新一个或多个容器的配置
version     	显示Docker版本信息
wait        	阻止,直到一个或多个容器停止,然后打印退出代码
posted @ 2019-06-15 20:21  生生不息.连绵不绝  阅读(226)  评论(0编辑  收藏  举报