Docker基础及安装
一.Docker主要资源概念:
images 镜像
containers 容器
network 网络
volumes 存储卷
plugins 插件
and other objects
二.名称空间相关备忘:
每个容器要素:UTS,Mount,IPC,PID,User,Net
主机名域名,文件系统,进程间通信通道,伪装进程,User,Net
名称空间:namespaces,linux内核级别支持通过名称空间实现UTS,Mount,IPC,PID,User,Net的相互隔离。
UTS:主机名和域名
User:用户
Mount:挂载文件系统
IPC:进程间通信专用通道
PID:进程ID
Net:网络
三.关于Docker镜像:
Docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动Docker容器。
采用分层构建机制,最底层为bootfs,其上为rootfs。
bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源;
rootfs:位于bootfs之上,表现为docker容器的根文件系统:
传统模式:系统启动之时,内核挂载rootfs时会首先将其挂载为“只读”模式,完整性自检完成后将其重新挂载为读写模式;
docker中,rootfs由内核挂载为“只读”模式,而后通过“联合挂载”技术额外挂载一个“可写”层;
四.关于Registry(repository+index)
Repository:
由某特定的docker镜像的所有迭代版本组成的镜像仓库;
一个Registry中可以存在多个Repository
Repository可分为“顶层仓库”和“用户仓库”
用户仓库名称格式为:“用户名/仓库名”
每个仓库可以包含多个Tag(标签),每个标签对应一个镜像。
Index:
维护用户账户、镜像的校验以及公共命名空间的信息
相当于为Registry提供了一个完成用户认证等功能的检索接口。
五.docker架构:
物理:
Client <--> Daemon <--> Registry Server
逻辑:
Containers:容器
Images:镜像、映像
Registry:Image Repositories
六.Docker主要概念及安装要求:
Linux 内核版本必须高于3.10,即Centos7以上;
如确实需要Centos6使用,则需要打对应支援补丁;
DOCKER_HOST:
运行docker daemon守护进程
Containers Images
DOCKER_Client
docker build
docker pull
docker run
Docker Socket:
IPV4 socket
IPV6 socket
Unix socket file
Docker Registries:
docker hub
private registry
七.下载和安装Docker:
1.在docker或清华大学repo文件并修改默认repo默认源路径:
搜索全文并替换
:%s@https//download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@
2.安装docker
yum install docker-ce (安装的社区版) yum install docker (这个是centos默认版本,不建议版本太旧!)
3.如果repo显示无法解析错误,可以在网卡配置中添加DNS解析,然后更新仓库即可:
vim /etc/sysconfig/network-scripts/ifcfg-ens37 DEVICE=ens37 BOOTPROTO=DHCP ONBOOT=yes DNS1=223.5.5.5 DNS2=223.6.6.6 systemctl restart network yum clean all yum repolist
4.如果提示安装缺少container-selinux,先下载包,然后yum安装即可:
下载地址及安装:
https://centos.pkgs.org/7/centos-extras-x86_64/container-selinux-2.74-1.el7.noarch.rpm.html
yum install container-selinux-2.74-1.el7.noarch.rpm
5.Dokcer配置文件:
docker-ce版本配置文件:(需要自行建立,或第一次启动后自动创建!)
vim /etc/docker/daemon.json
6.Docker镜像加速(建议使用!)
可用的加速器提供方:
docker cn,阿里云加速器,中国科技大学,可同时启用多个加速,用逗号隔开即可!
配置文件内加入:
{
"registry-mirrors":["https://xxxx.mirror.aliyuncs.com"]
}
注意:xxxx为专用加速码,获取方法如下:
步骤一:如果没有阿里云账号,需要注册阿里云开发账号
https://dev.aliyun.com/
步骤二:进入加速器页面获取加速信息
https://cr.console.aliyun.com/#/accelerator
查看自己的加速器地址,然后添加入配置文件中的registry-mirrors即可!
7.启动服务:
systemctl start docker
八.常用命令及使用:
Docker管理分组:
builder Manage builds config Manage Docker configs container Manage containers context Manage contexts engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage Docker secrets service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes
信息相关:
docker version 版本信息 docker info 详细信息 docker search 搜索相关镜像
操作镜像:
docker image --help 获取image相关帮助 docker images 列出所有镜像 docker image ls 同docker images docker image pull 下载镜像到本地仓库(拉取) 注意:也可使用docker pull,旧格式命令 docker image push 推送镜像到远程仓库 docker image inspect 列出镜像详细信息 docker image rm 删除镜像
拉取远程镜像:
docker pull quay.io/coreos/flannel:v0.10.0-amd64
注意:端口默认443,https
quay.io 服务器地址
coreos 用户名
flannel 仓库名
v0.10.0-amd64 tag,版本号
操作容器:
docker container run: 创建并运行一个容器; docker container create:创建一个容器; docker container start: 启动处于停止状态容器; docker container stop: 停止一个容器 docker container restart:重启一个容器 docker container kill 强行停止容器 docker container top 查看容器资源状态排序 docker container ls 列出所有容器 docker container ls -a 列出容器包括已停止容器 docker ps 列出所有容器 docker exec 在容器内执行命令 docker stats:动态方式显示容器的资源占用状态: docker top:Display the running processes of a container
暂停和解除暂停:
docker container pause docker container unpause
删除容器:
docker container rm
具体运行容器命令分析:
创建容器:基于“镜像文件”,镜像文件有默认要运行的程序;
注意:
运行的容器内部必须有一个工作前台的运行的进程;
docker的容器通常也是仅为运行一个程序;
要想在容器内运行多个程序,一般需要提供一个管控程序,例如supervised。
获取帮助:
docker container run --help
启动容器常见参数:
--name CT_NAME 设定容器名称 --rm: 容器运行终止即自行删除 --network BRIDGE:容器加入网络;默认为docker0; -i:--interactive: 交互式启动容器; -d:--detach: 后台启动容器 -t:Allocate a pseudo-TTY 运行在tty 从终端拆除:ctrl+p, ctrl+q -a attach:附加至某运行状态的容器的终端设备; exec:让运行中的容器运行一个额外的程序;
示例:
启动一个容器busybox:
#docker run --name b1 -it busybox
注:这里为容器名b1,交互式tty登录
退出容器:
#exit
此时查看容器状态
docker container ls | docker ps #未显示容器 docker container ls -a | docker ps -a #显示容器曾存在!
重新启动容器b1:
docker container start -ai b1
注意:如果容器内存在shell,可交互式登录可使用-ai选项,如果是daemon进程模式则直接使用容器名启动即可。
删除容器:
docker container rm b1
启动一个容器nginx:
#docker container run --name ngx1 -d nginx:1.14-alpine
注意:1.由于nginx不存在shell无法交互,因此以daemon模式运行-d
2.容器里的程序是不能运行在后台的,否则容器会自动关闭!
在容器内执行命令:
docker container exec
示例:
docker exec -it ngx1 /bin/sh
连接容器并在容器内运行sh,并能交互式执行命令
容器日志:
docker logs:
浙公网安备 33010602011771号