Docker安装部署(详细版)

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

<span class="token function">curl</span> -fsSL https://get.docker.com <span class="token operator">|</span> <span class="token function">bash</span> -s <span class="token function">docker</span> --mirror Aliyun <span class="token function">sudo</span> yum-config-manager <span class="token punctuation">\</span> --add-repo <span class="token punctuation">\</span> http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo <span class="token function">sudo</span> yum <span class="token function">install</span> -y yum-utils <span class="token punctuation">\</span> <span class="token operator">></span> device-mapper-persistent-data <span class="token punctuation">\</span> <span class="token operator">></span> lvm2 yum remove <span class="token function">docker</span> <span class="token punctuation">\</span> docker-client <span class="token punctuation">\</span> docker-client-latest <span class="token punctuation">\</span> docker-common <span class="token punctuation">\</span> docker-latest <span class="token punctuation">\</span> docker-latest-logrotate <span class="token punctuation">\</span> docker-logrotate <span class="token punctuation">\</span> docker-selinux <span class="token punctuation">\</span> docker-engine-selinux <span class="token punctuation">\</span> docker-engine yum list docker-ce --showduplicates <span class="token operator">|</span> <span class="token function">sort</span> -r yum <span class="token function">install</span> docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io yum -y <span class="token function">install</span> docker-ce systemctl start <span class="token function">docker</span> systemctl <span class="token builtin class-name">enable</span> <span class="token function">docker</span>
 <span class="token function">curl</span> -fsSL https://get.docker.com <span class="token operator">|</span> <span class="token function">bash</span> -s <span class="token function">docker</span> --mirror Aliyun  <span class="token function">sudo</span> yum-config-manager <span class="token punctuation">\</span> --add-repo <span class="token punctuation">\</span> http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  <span class="token function">sudo</span> yum <span class="token function">install</span> -y yum-utils <span class="token punctuation">\</span> <span class="token operator">></span> device-mapper-persistent-data <span class="token punctuation">\</span> <span class="token operator">></span> lvm2  yum remove <span class="token function">docker</span> <span class="token punctuation">\</span> docker-client <span class="token punctuation">\</span> docker-client-latest <span class="token punctuation">\</span> docker-common <span class="token punctuation">\</span> docker-latest <span class="token punctuation">\</span> docker-latest-logrotate <span class="token punctuation">\</span> docker-logrotate <span class="token punctuation">\</span> docker-selinux <span class="token punctuation">\</span> docker-engine-selinux <span class="token punctuation">\</span> docker-engine  yum list docker-ce --showduplicates <span class="token operator">|</span> <span class="token function">sort</span> -r  yum <span class="token function">install</span> docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io  yum -y <span class="token function">install</span> docker-ce  systemctl start <span class="token function">docker</span>  systemctl <span class="token builtin class-name">enable</span> <span class="token function">docker</span> 
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y yum-utils \ > device-mapper-persistent-data \ > lvm2 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine yum list docker-ce --showduplicates | sort -r yum install docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io yum -y install docker-ce systemctl start docker systemctl enable docker

最好在服务部署的时候就干调优的事情,对服务影响最小

-- 关闭docker服务 systemctl stop <span class="token function">docker</span> -- 创建迁移后的目录 <span class="token function">mkdir</span> -p /home/jamelli/docker/data/lib -- 复制原有docker数据到新目录 <span class="token function">rsync</span> -r -avz /var/lib/docker /home/jamelli/docker/data/lib <span class="token function">mkdir</span> -p /etc/systemd/system/docker.service.d/ -- 创建docker 映射文件 <span class="token function">vi</span> /etc/systemd/system/docker.service.d/devicemapper.conf 保存内容<span class="token operator">>></span> <span class="token punctuation">[</span>Service<span class="token punctuation">]</span> <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span> <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span>/usr/bin/dockerd --graph<span class="token operator">=</span>/home/jamelli/docker/data/lib/docker -- 重新加载 <span class="token function">docker</span> systemctl daemon-reload systemctl restart <span class="token function">docker</span> systemctl <span class="token builtin class-name">enable</span> <span class="token function">docker</span> -- 确认docker 路径<span class="token punctuation">[</span>Docker Root Dir 属性列<span class="token punctuation">]</span> <span class="token function">docker</span> info -- 确认镜像是否还在 <span class="token function">docker</span> images -- 删除历史docker文件 <span class="token function">rm</span> -rf /var/lib/docker/
-- 关闭docker服务 systemctl stop <span class="token function">docker</span> -- 创建迁移后的目录 <span class="token function">mkdir</span> -p /home/jamelli/docker/data/lib -- 复制原有docker数据到新目录 <span class="token function">rsync</span> -r -avz /var/lib/docker /home/jamelli/docker/data/lib <span class="token function">mkdir</span> -p /etc/systemd/system/docker.service.d/ -- 创建docker 映射文件 <span class="token function">vi</span> /etc/systemd/system/docker.service.d/devicemapper.conf 保存内容<span class="token operator">>></span> <span class="token punctuation">[</span>Service<span class="token punctuation">]</span> <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span> <span class="token assign-left variable">ExecStart</span><span class="token operator">=</span>/usr/bin/dockerd --graph<span class="token operator">=</span>/home/jamelli/docker/data/lib/docker -- 重新加载 <span class="token function">docker</span> systemctl daemon-reload systemctl restart <span class="token function">docker</span> systemctl <span class="token builtin class-name">enable</span> <span class="token function">docker</span> -- 确认docker 路径<span class="token punctuation">[</span>Docker Root Dir 属性列<span class="token punctuation">]</span> <span class="token function">docker</span> info -- 确认镜像是否还在 <span class="token function">docker</span> images -- 删除历史docker文件 <span class="token function">rm</span> -rf /var/lib/docker/ 
-- 关闭docker服务 systemctl stop docker -- 创建迁移后的目录 mkdir -p /home/jamelli/docker/data/lib -- 复制原有docker数据到新目录 rsync -r -avz /var/lib/docker /home/jamelli/docker/data/lib mkdir -p /etc/systemd/system/docker.service.d/ -- 创建docker 映射文件 vi /etc/systemd/system/docker.service.d/devicemapper.conf 保存内容>> [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph=/home/jamelli/docker/data/lib/docker -- 重新加载 docker systemctl daemon-reload systemctl restart docker systemctl enable docker -- 确认docker 路径[Docker Root Dir 属性列] docker info -- 确认镜像是否还在 docker images -- 删除历史docker文件 rm -rf /var/lib/docker/

max-file:日志文件上限个数
max-size:日志文件上限大小

-- log 限制 <span class="token function">vim</span> /etc/docker/daemon.json 保存内容<span class="token operator">>></span> <span class="token punctuation">{<!-- --></span> <span class="token string">"log-driver"</span><span class="token builtin class-name">:</span><span class="token string">"json-file"</span>, <span class="token string">"log-opts"</span><span class="token builtin class-name">:</span> <span class="token punctuation">{<!-- --></span><span class="token string">"max-size"</span><span class="token builtin class-name">:</span><span class="token string">"500m"</span>, <span class="token string">"max-file"</span><span class="token builtin class-name">:</span><span class="token string">"3"</span><span class="token punctuation">}</span> <span class="token punctuation">}</span>
 -- log 限制 <span class="token function">vim</span> /etc/docker/daemon.json 保存内容<span class="token operator">>></span> <span class="token punctuation">{<!-- --></span> <span class="token string">"log-driver"</span><span class="token builtin class-name">:</span><span class="token string">"json-file"</span>, <span class="token string">"log-opts"</span><span class="token builtin class-name">:</span> <span class="token punctuation">{<!-- --></span><span class="token string">"max-size"</span><span class="token builtin class-name">:</span><span class="token string">"500m"</span>, <span class="token string">"max-file"</span><span class="token builtin class-name">:</span><span class="token string">"3"</span><span class="token punctuation">}</span> <span class="token punctuation">}</span> 
-- log 限制 vim /etc/docker/daemon.json 保存内容>> { "log-driver":"json-file", "log-opts": {"max-size":"500m", "max-file":"3"} }
<span class="token function">docker</span> system <span class="token function">df</span> <span class="token function">docker</span> system prune <span class="token function">docker</span> system prune -a <span class="token function">docker</span> system <span class="token function">df</span> -v
 <span class="token function">docker</span> system <span class="token function">df</span>  <span class="token function">docker</span> system prune   <span class="token function">docker</span> system prune -a  <span class="token function">docker</span> system <span class="token function">df</span> -v 
docker system df docker system prune docker system prune -a docker system df -v

业务命令

<span class="token function">docker</span> system <span class="token function">df</span> docker自身的内存占用 <span class="token function">docker</span> system prune <span class="token function">docker</span> system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像<span class="token punctuation">(</span>即无tag的镜像 <span class="token function">docker</span> image 查看docker镜像内容 <span class="token function">docker</span> info 查看docker信息 <span class="token function">docker</span> stats 查看容器运行内存cpu占用情况 <span class="token function">docker</span> update --restart<span class="token operator">=</span>always 容器名称 设置docker容器开机启动 <span class="token function">less</span> /var/lib/docker/containers/容器ID/容器ID-json.log <span class="token function">docker</span> 容器日志路径日志内容查询 <span class="token function">docker</span> logs --tail<span class="token operator">=</span><span class="token number">10</span> -f 容器名称/容器id <span class="token function">docker</span> 容器日志内容实时查看
<span class="token function">docker</span> system <span class="token function">df</span> docker自身的内存占用 <span class="token function">docker</span> system prune <span class="token function">docker</span> system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像<span class="token punctuation">(</span>即无tag的镜像 <span class="token function">docker</span> image 查看docker镜像内容 <span class="token function">docker</span> info 查看docker信息 <span class="token function">docker</span> stats 查看容器运行内存cpu占用情况 <span class="token function">docker</span> update --restart<span class="token operator">=</span>always 容器名称 设置docker容器开机启动 <span class="token function">less</span> /var/lib/docker/containers/容器ID/容器ID-json.log <span class="token function">docker</span> 容器日志路径日志内容查询 <span class="token function">docker</span> logs --tail<span class="token operator">=</span><span class="token number">10</span> -f 容器名称/容器id <span class="token function">docker</span> 容器日志内容实时查看 
docker system df docker自身的内存占用 docker system prune docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像 docker image 查看docker镜像内容 docker info 查看docker信息 docker stats 查看容器运行内存cpu占用情况 docker update --restart=always 容器名称 设置docker容器开机启动 less /var/lib/docker/containers/容器ID/容器ID-json.log docker 容器日志路径日志内容查询 docker logs --tail=10 -f 容器名称/容器id docker 容器日志内容实时查看

docker 构建容器时推荐追加的脚本

-it -d # 支持后台运行 -e TZ=Asia/Shanghai # 指定时区 -v /etc/localtime:/etc/localtime:ro # 公用服务器时间 --restart=always # 自动重启
 -it -d # 支持后台运行 -e TZ=Asia/Shanghai # 指定时区 -v /etc/localtime:/etc/localtime:ro # 公用服务器时间 --restart=always # 自动重启 
-it -d # 支持后台运行 -e TZ=Asia/Shanghai # 指定时区 -v /etc/localtime:/etc/localtime:ro # 公用服务器时间 --restart=always # 自动重启

解决方案:添加好用的镜像仓库地址

sudo vim /etc/docker/daemon.json 增加内容如下 { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] } -- 重新加载 docker systemctl daemon-reload systemctl restart docker
sudo vim /etc/docker/daemon.json 增加内容如下 { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] } -- 重新加载 docker systemctl daemon-reload systemctl restart docker 
sudo vim /etc/docker/daemon.json 增加内容如下 { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] } -- 重新加载 docker systemctl daemon-reload systemctl restart docker

原文链接:https://blog.csdn.net/Jamel_LiToo/article/details/109768177

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享