Docker安装部署(详细版)

Docker 安装部署(CentOS)

简介

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

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

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

安装

# 安装镜像
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
# 安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2
sudo yum install -y yum-utils \
>   device-mapper-persistent-data \
>   lvm2

# 如果存在旧docker,卸载旧版本
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
# 安装选择的版本,我这里选的是19.03.13  
yum install docker-ce-19.03.13 docker-ce-cli-19.03.13 containerd.io
# 也可以安装最新版
yum -y install docker-ce

# 启动docker
systemctl start docker
# 设置开机自启
systemctl enable 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 映射文件
cat <<EOF > /etc/systemd/system/docker.service.d/devicemapper.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd  --graph=/home/jamelli/docker/data/lib/docker
EOF
        
-- 重新加载 docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

-- 如果重启失败,删除文件执行下面的操作
rm -rf /etc/systemd/system/docker.service.d/devicemapper.conf
sudo mkdir -p /etc/docker
vim /etc/docker/daemon.json
新增以下信息:
{
	"data-root": "/home/jamelli/docker/data/lib/docker"
}
    
-- 确认docker 路径[Docker Root Dir 属性列]
docker info
-- 确认镜像是否还在
docker images
-- 删除历史docker文件
rm -rf /var/lib/docker/

日志调优

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

 -- log 限制
cat <<EOF > /etc/docker/daemon.json
{
	"log-driver":"json-file",
	"log-opts": {"max-size":"100m", "max-file":"3"}
}
EOF

磁盘优化

#类似于Linux上的df命令,用于查看Docker的磁盘使用情况:
docker system df

#可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。 
docker system prune

#清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了…
#所以使用之前一定要想清楚.。我没用过,因为会清理 没有开启的  Docker 镜像。
docker system prune -a

#docker system df -v 命令可以进一步查看空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间
docker system df -v

业务命令

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 	# 自动重启

问题

  1. 使用docker pull 下载镜像的时候提示“Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: TLS handshake timeout”

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

sudo vim /etc/docker/daemon.json

增加内容如下
{
 "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

-- 重新加载 docker
systemctl daemon-reload
systemctl restart docker
当你准备在 Docker部署 Zabbix 时,最好的方法是使用官方的 Zabbix Docker 镜像。以下是详细步骤: 1. 首先,从 Docker Hub 上拉取 Zabbix 镜像,使用以下命令: ``` docker pull zabbix/zabbix-server-mysql:latest ``` 2. 接下来,创建一个 Docker 网络以便容器能够互相通信。使用以下命令: ``` docker network create zabbix_network ``` 3. 然后,启动一个 MySQL 容器。在启动容器时,我们需要指定一个 root 密码,并且将容器连接到之前创建的网络中。使用以下命令: ``` docker run --name zabbix-mysql-server \ -e MYSQL_ROOT_PASSWORD=my_password \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -d mysql:latest \ --character-set-server=utf8 --collation-server=utf8_bin ``` 4. 启动 Zabbix Server 容器。在启动容器时,我们需要将其连接到之前创建的网络中,并指定 MySQL 主机和密码。使用以下命令: ``` docker run --name zabbix-server \ -e DB_SERVER_HOST=zabbix-mysql-server \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest ``` 5. 最后,启动 Zabbix Web 容器。同样需要将其连接到之前创建的网络中,并将其映射到本地端口以便我们可以通过浏览器访问。使用以下命令: ``` docker run --name zabbix-web-nginx-mysql \ -e DB_SERVER_HOST=zabbix-mysql-server \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -p 80:80 \ -d zabbix/zabbix-web-nginx-mysql:latest ``` 这样就完成了 Zabbix 的 Docker 安装部署
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值