1 Docker
dockerfiler 镜像构建
Compose是在单机进行容器编排 Horbor 镜像仓库
Docker swarm 在多机进行容器编排
Docker Compose缺点是不能在分布式多机器上使用
Docker swarm缺点是不能同时编排多个服务,
Docker Stack,可以在分布式多机器上同时编排多个服务。
1.1 Docker常用命令
如果在使用 镜像或者是容器的别名有问题的话,就使用它的容器id
docker 服务 启动 停止 重启 查看 开机自启
systemctl start |stop | restart | status|enable docker
docker 镜像
docker images 查看镜像 docker search 搜索镜像 docker pull centos:7 拉取镜像 docker push 推送镜像 在推送镜像的时候需要先登录 docker rmi 删除镜像 docker rmi docker images -q 删除所有版本
docker 容器
docker ps (-a 查看所有容器) -l :显示最近创建的容器。 -n :列出最近创建的n个容器。
docker start |stop | restart | status|enable 容器id 启动 停止 重启 查看 开机自启
docker run -i:表示运行容器 -t:启动后会进入其命令行 -d:后台运行
--name :创建的别名 -v:表示目录映射关系 -p:表示端口映射, / 如果一行写不下用/来换行
exec 进入运行时容器 示例docker exec -it 容器id /bin/bash
logs -f 容器的日志 inspect 容器的信息信息 rm删除容器
Dockerfiler
FROM 指定基础镜像 RUN 运行命令 EXPOSE 开放端口 ADD 复制文件到镜像 自动解压 docker build 构建示例 docker build -t reggie_take_out-1.0-SNAPSHOT.jar reggie.jar . (-t表示 构建的文件 .是在当前目录)
docker-compose docker-compose.yml docker-compose config -q 坚持语法是否有问题
docker-compose up 启动 -d 后台启动 docker-compose down 停止
其他
docker cp 复制一个文件到容器内部 文件路径 容器名:文件路径 docker cp /root/F.sql mysql:/
1.2什么是docker
Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
把环境和项目进行打包,发布到docker仓库
Docker应用场景
-
Web 应用的自动化打包和发布
-
自动化测试和持续集成、发布
-
在服务型环境中部署和调整数据库或其他的后台应
docker 通过镜像和隔离机制来解决
DockerRUN
如果docker run hello-world
开始运行 docker会在本机寻找镜像,如果有就在本机运行,如果没有就去Dockerhup上下载,DockerHup是否可以找到,如果能找到就下载,找不到,就返回
Docke 如何工作的 是一个Client-Server结构系统,Docker的守护运行在主机上,通过Socket从客户端访问
DockerSever接收到Docker Client的指令
Docker 为什么比虚拟机更快
Docker 不需要在重新加载一个操作系统内核,而docker是利用宿主机的操作系统来操作的
1.3 docker 架构图
Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职
Docker Client 是一个客户端 systemctl start dcker 启动其客户端 进入客户端 然后才能发送一系列命令
docker run -d 也是这么一个意思
1 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。
2 Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。
3 Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。
4 Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver 将下载镜像以 Graph 的形式存储。
5 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker容器网络环境。
6 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。
7 Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过 Libcontainer 来实现具体对容器进行的操作。
2 Docker基础使用
如果在安装docker 升级yum源 提升yum源找不到的话
yum clean all 清理 然后重新加载一下 yum makecache
2.1 docker安装
2.1.1 docker安装
或者使用脚本文件安装
vim docker.sh
#!/bin/bash yum install -y yum-utils yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo mkdir -p /etc/docker && touch /etc/docker/daemon.json cat > /etc/docker/daemon.json <<END { "registry-mirrors": ["https://3sf1ht53.mirror.aliyuncs.com"] } END yum install docker-ce docker-ce-cli containerd.io systemctl start docker
chmod +x docker.yml && ./docker.yml
0、安装完docker一定要先启动docker docker start
1、使用uname命令验证 内核版本 内核版本要大于 3.1
[root@localhost docker]# uname -r 3.10.0-1127.el7.x86_64
2、卸载已安装的Docker
如果已经安装过Docker,请先卸载,再重新安装,来确保整体的环境是一致的。
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
3、安装yum工具包和存储驱动
yum install -y yum-utils
4、设置镜像的仓库
每个人的镜像仓库都不一样
容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云
用国内的,阿里云docker镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、安装docker
注意 : docker-ce 社区版 而ee是企业版。这里我们使用社区版即可。
yum install docker-ce docker-ce-cli containerd.io
6、启动docker
systemctl start docker
7、设置开机启动
systemctl enable docker
2.2 docker卸载
卸载docker
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
2.1.3 离线安装
对于yum命令不能用的情况下 如果进行离线安装 systemctl 就查找不到你安装的路径和位置 需要先进行注册到systemctl上
1 下载安装包
镜像地址
https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz
wget https://cce-tools.bj.bcebos.com/docker/docker-cce-19.03.13.tar.gz
2 解压
tar -zxvf
3 把解压的文件移动到/usr/bin 目录里
这个目录不要随便改,否则可能出错
mv 1.txt 2.txt /usr/bin 可以移动多个文件
4 创建docker.service文件 进入/etc/systemd/system/目录下,创建docker.service
我理解应该就是docker的服务文件
5 编写docker.service
--insecure-registry=116.62.205.170 此处改为你自己服务器ip
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=116.62.205.170 ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
6 添加文件权限
chmod 777 /etc/systemd/system/docker.service
7 刷新权限
意思就是说,你注册了一个服务进行所以要刷新一下
systemctl daemon-reload
8 启动docker
systemctl start docker
一定要先启动
9 参考博客
docker离线部署_离线部署docker_杜若辰的博客-CSDN博客
2.1.4 docker升级
有的时候可能会越到docker版本不匹配的问题
1列出包含docker字段的软件的信息 rpm -qa | grep docker 2 yum remove移除 docker yum remove docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64 yum remove docker-client-1.13.1-96.gitb2f74b2.el7.centos.x86_64 yum remove docker-common-1.13.1-96.gitb2f74b2.el7.centos.x86_64 3 升级docker的版本为最新版本 curl -fsSL https://get.docker.com/ | sh 3 重启docker systemctl restart docker
2.2 设置镜像加速器
1、 编辑文件/etc/docker/daemon.json 这个需要自己创建
# 执行如下命令: mkdir -p /etc/docker && touch /etc/docker/daemon.json vi /etc/docker/daemon.json
2、在文件中加入下面内容
容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云 每个人的地址都不一样可以到阿里云上注册一下
{ "registry-mirrors": ["https://3sf1ht53.mirror.aliyuncs.com"] }
修改这个配置文件要注意 ,如果编写的有问题 启动和重启docker就会启动不起来 systemctl restart docker 会报错
2.3 dock公用命令
# 启动docker服务: systemctl start docker # 停止docker服务: systemctl