千家信息网

centos7中如何安装使用Docker

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关centos7中如何安装使用Docker的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装(以centos7为例)安装yum install -y
千家信息网最后更新 2025年01月23日centos7中如何安装使用Docker

这篇文章给大家分享的是有关centos7中如何安装使用Docker的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

安装(以centos7为例)

安装yum install -y docker启动service docker start验证安装docker version由于网络问题,可能拉取镜像的时候很慢,可以通过设置代理等操作加快,或者自建镜像仓库等贴一下我之前有用到仓库中心:Docker仓库https://hub.docker.com/explore/国内:需要登录https://cr.console.aliyun.com/#/imageListhttps://c.163.com/hub#/m/home/

指令

1.docker pull [options] name[:TAG] 拉取镜像:不加标签默认获取latest2.docker run [options] image[:TAG][COMMAND]运行镜像:指令的选项较多,介绍自己平常使用较多的-d:后台运行-p:指定端口端口映射-P:启动全部端口映射,需要通过docker ps查看端口映射情况-v:文件映射-e:变量赋值-m:限制容器的内存上限--name:容器命名--restart=always:容器重启3.docker ps:查看运行的容器-a:查看全部,包括已经停止4.docker exec -it containid bash:进入容器内部5.docker stats containid:查看容器的运行情况6.docker build -t image:tag -f buildfile .:构建镜像构建镜像:有时候我们需要为存在的镜像加入新的插件来重新构建特有的镜像,通过编写Dockerfile来构建贴一个自己构建php的镜像(基于基础php加入redis,mq等插件)docker build -t php:5.6-fpm-ext -f ./docker/php/phpDockerfile .phpDockerfile:FROM hub.c.163.com/library/php:5.6-fpmRUN apt-get update && apt-get install -y  libfreetype6-dev  libjpeg62-turbo-dev  libmcrypt-dev  libpng12-dev RUN docker-php-ext-install -j$(nproc) iconv mcrypt RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ RUN docker-php-ext-install -j$(nproc) gdRUN docker-php-ext-install mysqliRUN docker-php-ext-install pdo_mysqlRUN docker-php-ext-install zipRUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz \    && tar xfz /tmp/redis.tar.gz \    && rm -r /tmp/redis.tar.gz \    && mkdir -p /usr/src/php/ext \    && mv phpredis-2.2.7 /usr/src/php/ext/redis \    && docker-php-ext-install redisCOPY ./docker/php/rabbitmq-c-0.4.1.tar.gz  /tmp/rabbitmq-c-0.4.1.tar.gzRUN tar zxvf /tmp/rabbitmq-c-0.4.1.tar.gz \    && curl -L -o /tmp/amqp-1.2.0.tgz http://pecl.php.net/get/amqp-1.2.0.tgz \    && tar zxvf /tmp/amqp-1.2.0.tgz \    && rm -r /tmp/rabbitmq-c-0.4.1.tar.gz \    && rm -r /tmp/amqp-1.2.0.tgz \    && mkdir -p /usr/src/php/ext \    && mv rabbitmq-c-0.4.1 /usr/src/php/ext/rabbitmq \    && mv amqp-1.2.0 /usr/src/php/ext/amqp \    && cd /usr/src/php/ext/rabbitmq \    && ./configure --prefix=/usr/local/rabbitmq-c-0.4.1 \    && make && make install \    && cd /usr/src/php/ext/amqp \    && docker-php-ext-configure amqp --with-php-config=/usr/local/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.4.1/ \    && docker-php-ext-install amqp

问题事项

防火墙问题: 在一个容器内容调用宁外一个容器的url出现curl:no route to host问题。 经排查:我的centos7防火墙使用了firewalld,firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。 解决:在firewalld中加入容器需要端口 firewall-cmd --zone=public --add-port=80/tcp --permanent:加入80端口 firewall-cmd --reload:重启防火墙

权限问题: 有时候会出现无法写文件等问题。 解决:(最粗暴的方案) 给文件加入chmod 777 -R * docker加入docker run --privileged=true

JAVA内存问题: 使用springboot的时候出现内存吃紧,由于没设置jvm的内存大小默认直接使用机器内存的1/4作为上限,导致内存吃紧,通过加入docker run -m 只是限制容器的内存上限,到达上限之后容器会被停掉,但是不会对jvm的内存有影响,所以要解决应该在启动容器的时候加入 java -Xmx256m -Xms64m -Xmn32m。当然也可以通过其他方案设置jvm,看个人喜好。

代码和镜像打包问题: docker使用的时候,代码是否需要和镜像一起构建变成新的镜像,这种方案可能很美好,构建完,哪里有需要拉取,运行就好。但是在实际运用过程,业务的代码是要经常变更的,所以我们选取的方案是通过-v映射代码,镜像以运行环境为准,不做代码打入,这样变更代码,只需替换文件,无须重构建镜像。

数据库问题: 在我们的开发和测试docker也做了mysql数据库,不过看了网络的一些介绍,说不建议把数据库使用docker,可能会出现问题。由于我们生产环境使用了阿里云的数据库,所以暂时没有发现相关的坑。

应用问题: docker的容器创建,关闭等通过什么方式?docker compose,还是shell? 考虑到要给其他客户安装加上网络问题,我直接使用shell脚本编写,没有使用compose。最后贴一些我的非专业运维的shell脚本。

相关扩展

1.docker的网络介绍,docker有3种网络类型:

Bridge(默认)  Host  NoneBridge:做一个网桥端口映射,容器有独立ip,端口,Host:容器内网络和主机网络一样

2.docker compose 管理多个容器,通过编写docker-compose.yaml来定义需要容器

安装:curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose授权:chmod +x /usr/local/bin/docker-compose查看:docker-compose --version

贴一个docker-compose.yaml

version: '2'services:  java:    build: .    ports:      - "8080:8080"    volumes:      - "./tmp:/tmp"      - "./logs:/opt/logs"    depends_on:      - mysql    entrypoint: [ "sh", "-c", "./wait-for-it.sh -h mysql -p 3306 -s -- java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.datasource.url=jdbc:mysql://mysql:3306/mq -jar app.jar" ]  mysql:    image: daocloud.io/mysql:5.6    environment:      MYSQL_DATABASE: mq      MYSQL_USER: mq      MYSQL_PASSWORD: 123456      MYSQL_ROOT_PASSWORD: 123456

3.docker可视化UI控制台 通过可视化的页面来控制容器启停,运行状态等。比较流行的有dockerui,Shipyard等,看个人需要。

结尾

最后启动容器的shell脚本:

echo "start docker"service docker startfunction start_image {  if [ $(docker ps  -a | grep -c $1) -ge 1 ]  then    echo "container has exits $1 start"    docker start $1  else    echo "$1 run image create container"    docker run -d  -v /etc/localtime:/etc/localtime:ro --privileged=true --name $1 $2  fi}if [ $(docker images hub.c.163.com/library/mysql:5.6 | grep -c hub.c.163.com/library/mysql) -ge 1 ]then   start_image cloud-mysql-dev \    "-p 8000:3306     -v ${PWD}/data/mysql:/var/lib/mysql     -v ${PWD}/docker/mysql:/etc/mysql/conf.d      -e MYSQL_ROOT_PASSWORD=123cloud     hub.c.163.com/library/mysql:5.6" fiif [ $(docker images hub.c.163.com/library/redis:3 | grep -c hub.c.163.com/library/redis) -ge 1 ]then   start_image cloud-redis-dev \    "-p 8001:6379     -v ${PWD}/data/redis:/data     -v ${PWD}/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf     hub.c.163.com/library/redis:3    redis-server /usr/local/etc/redis/redis.conf      --appendonly yes "fi

感谢各位的阅读!关于"centos7中如何安装使用Docker"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

容器 镜像 问题 内存 端口 网络 运行 代码 数据 上限 数据库 文件 方案 时候 仓库 内容 脚本 防火墙 防火 吃紧 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北戴河新区网络安全设备 靠谱的销售管理软件开发机构 论文计算机网络技术 药物 毒性 安全性 数据库 怎么规划各类服务器功能 第七章作业 计算机网络安全 软件开发自我介绍500字 电脑上没有服务器管理器怎么下载 电信云防护服务器 高一信息会考数据库选择题 网络安全网络文明主题班会 网络安全和信息化委员会讲话 网络安全保密工作自查 康奈尔法学数据库 上海指玩网络技术有限公司 网信办网络安全疫情 爬虫放到服务器上安全吗 linux服务器网络设置 简单的vpn服务器 什么是网络安全的基本内容 信息安全还是网络技术 闵行区服务软件开发学习 数据库缓存时间怎么计算 关于网络安全公益的海报 中国网络安全大片 浙江光源软件开发 广东计算机应用软件开发定制 参加国家网络安全宣传周 电信服务器哪个最火 服务器关机后还亮灯是为什么
0