一、容器概念
- 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 阻止,直到一个或多个容器停止,然后打印退出代码
来源:https://www.cnblogs.com/L-dongf/p/11028721.html