运维|Docker LNMP搭建报错 Depends: zlib1g-dev but it is not going to be installed or libz-dev

在使用Docker 搭建LNMP环境遇到的坑:
following packages have unmet dependencies: libfreetype6-dev : Depends: zlib1g-dev but it is not going to be installed or libz-dev libpng12-dev : Depends: zlib1g-dev but it is not going to be installed

尝试换过各种源都没能解决这个问题,最后在博文评论中找的解决方案:https://www.awaimai.com/2120.html
更换源中科大的就解决了。
构建PHP的Dockerfile
FROM php:7.1-fpm COPY zhongkeda.list /etc/apt/sources.list RUNapt-get update && apt-get install -y vim libfreetype6-dev libjpeg-dev libpng-dev\ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install gd \ && docker-php-ext-install mysqli \ && docker-php-ext-install pdo_mysql \ && rm -r /var/lib/apt/lists/*

中科大源
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free

目录结构:
[root@localhost Dedecms]# tree -L 2 . ├── docker-compose.yml ├── docker-compose.yml.old ├── mysql │├── config │├── data │└── Dockerfile ├── nginx │├── conf │└── Dockerfile ├── phpfpm │├── Dockerfile │├── sources1.list │├── sources.list │└── zhongkeda.list ├── sources2.list ├── sources.list ├── sources.list.wheezy └── webcode ├── 123.html ├── DedeCMS5.7 ├── DedeCMS-V5.7-UTF8-SP1.tar.gz ├── index.php └── testdb.php

nginx Dockerfile
FROM nginx:latest

MYSQL Dockerfile
FROM mysql:5.6

docker-compose.yml
mysql: build: ./mysql ports: - "3306:3306" volumes: - ./mysql/data/:/var/lib/mysql/ environment: MYSQL_ROOT_PASSWORD : DEDECMS6655233phpfpm: build: ./phpfpm ports: - "9000:9000" volumes: - ./webcode/:/var/www/html/ links: - "mysql" restart: alwaysnginx: build: ./nginx ports: - "8881:80" links: - "phpfpm" volumes: - ./webcode/:/var/www/html/ - ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf

常用命令
镜像操作
#1. 查看镜像docker images docker images image_naem docker images image_id#2. 删除镜像 (删除之前需要先删除使用镜像的容器 ,删除容器见下方) # 当有多个镜像ID值一样的时候可以通过镜像的名字来删除docker rmi image_name docker rmi image_id#3. 拉取镜像docker pullimage_name:version # image_name 是要拉取镜像的名称 冒号后面跟的是镜像的版本 docker pull image_name #这种方式拉取的是最新的版本tag: lastest#4. 查找镜像 docker search image_name#搜索出来有三列结果:NAME:镜像仓库源的名称 DESCRIPTION:镜像的描述 OFFICIAL:是否docker官方发布#5. 构建镜像# 尽量只用一个RUN,多个命令使用脚本或者 \和&& 将命令转到下一行,保证功能的同时又美观,例子见上方的PHP Dockerfile #ADD替换成COPY,ADD会对压缩包解压,根据需求自行选择docker build -t Dedecms/php:7.1. -t :指定创建目标镜像的名称 . :表示Dockerfile 所在路径#6. 给镜像打标签 docker tag image_idweb/php:dev# 7. 使用镜像创建容器run -it Dedecms/php:7.1 /bin/bash 如果需要对容器进行更新,请进入容器后使用 apt-get update ,如果更新速度太慢请参见上方的源更换源 -t: 使用伪终端 -i:使用交互式操作 /bin/bash:指定使用的shell#8. 提交容器副本为新的镜像docker commit -m=" 描述信息"-a="镜像提交作者"container_id new_image_name-m:提交的描述信息 -a:指定镜像作者 container_id :提交容器的ID ew_image_name:指定要创建的目标镜像名

容器操作
#1. 查看正在运行的容器docker ps#查看所有容器 docker ps -a#2. 删除容器 #可以一次删除多个,再rm 后面使用空格隔开依次写上要删除的容器docker rm container_id docker rm container_name#3. 运行容器docker run -d -Pdedecms/php php 123.php docker run -d -p8008:80 docker.io/nginx # 指定IP+PORT docker run -d -p127.0.0.1:8008:80 docker.io/nginx #指定协议 ,默认tcp docker run -d -p127.0.0.1:8008:80/udp docker.io/nginx 给容器命名 docker rrun -d -P --name dedecmsdocker.io/nginx #测试 curl http://localhost:8008/ 将容器内部端口80映射到本机端口8008上-d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到我们使用的主机上。#4. 查看容器端口映射情况docker port container_id docker port container_name 或者 docker ps#5. 查看容器输出docker logs -f container_id#6. 查看容器内进程docker top container_name#7. 查看容器详细的配置docker inspect container_name#8. 停止容器docker stop container_id docker stop container_name#9. 重启容器docker start container_id docker start container_name docker restart container_id docker restart container_name#10. 查看最后一次创建的容器docker ps -l#11. 查看运行日志,用来排查容器运行出错效果不错docker logs container_id docker logs container_name

docker-compose 命令
  • 构建运行项目
docker-compose up -d docker-compose-d: 后台启动模式

  • 查看运行运行的项目
docker-compose ps

  • 一次性的运行项目
docker-compose run contianername1 containername2

  • 启动-停止-移除
# 启动 docker-compose start docker-compose restart# 停止 docker-compose stop # 暂停一个容器 docker-compose pause container_id# 移除 docker-compose down #加入参数移除数据卷 --valumes docker-compose down --valumesdocker-compose rm container_id

注意:docker-compose rm不会删除应用的网络和数据卷,docker-compose down删除的更彻底
  • 查看容器输出
docker-compose logs

学习过程中的其他坑
坑1:Couldn't connect to Docker daemon at http://localhost:4243 - is it running?
#查找来的资料,一般都是权限的问题也就是使用sudo可以解决1. 在使用docker-compose时加上sudo sudo docker-compose xxx2. 将当前用户添加到docker用户组 sudo usermod -aG docker ${USER}3. 设置DOCKER_HOST这一个环境变量 export DOCKER_HOST=tcp://localhost:4243

坑2:mysql_1 | chown: cannot read directory '/var/lib/mysql/': Permission denied
#这个关闭selinux即可1. 临时关闭 su -c "setenforce 0"# set enforce2. 永久性关闭 vim /etc/selinux/config 设置 SELINUX=disabled重启电脑reboot ,再次查看selinux状态:sestatus

坑3:iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.3 --dport 24224 -j ACCEPT: iptables: No chain/target/match by that name.
1.kill掉docker所有进程 [root@node-11 ~]# pkill docker 2.清空nat表的所有链 [root@node-11 ~]# iptables -t nat -F3.停止docker默认网桥docker0 [root@node-11 ~]# ifconfig docker0 down4.删除docker0网桥 [root@node-11 ~]# brctl delbr docker05.重启docker服务 [root@node-11 ~]# systemctl restart docker

【运维|Docker LNMP搭建报错 Depends: zlib1g-dev but it is not going to be installed or libz-dev】转载于:https://www.cnblogs.com/ssjt/articles/9584481.html

    推荐阅读