Docker篇


CentOS 安装Docker - 菜鸟教程

安装须知:
1.Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本 2.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本

安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

sudo yum makecache fast

安装 Docker-ce:

sudo yum -y install docker-ce

启动 Docker 后台服务

sudo systemctl start docker

测试运行 hello-world

[root@runoob ~]# docker run hello-world

会自动下载一个镜像运行

注意配置CDN加速:

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker正式使用常见命令

Docker-Hub注册:https://hub.docker.com/signup

Docker验证登录

docker login

Docker寻找镜像

docker search tomcat

Docker拉取镜像

docker pull tomcat

Docker查看本地镜像

docker images

Docker删除镜像和容器

docker删除镜像:
docker rmi 镜像ID
如果是本地的包含tag的话需要指明
docker rmi 806857264/kerwin_docker:kerwin_tomcat_8080 docker删除容器:
首先需要停止容器
docker stop 【id名字】
docker rm 【id名字】

Docker查看正在运行的容器

docker ps

查看所有容器
docker ps -a

Docker交互模式进入到目标文件目录

docker exec -it d585d5151285 /bin/bash   交互模式进入到目标文件目录,可以进行修改等,如进入到tomcat目录
d585d5151285为容器ID

停止容器/重启容器

docker stop 【名字】
docker start 【名字】
docker restart 【名字】

Docker运行镜像

如tomcat为例:
docker run --name tomcat-80 -p 80:8080 -v /home/docker_tomcat:/usr/local/tomcat/webapps -d tomcat
重命名为tomcat-80 端口映射 80->8080 宿主机文件交互目录 运行的镜像为tomcat :ro赋予可读权限

Docker部署redis

redis.conf 配置文件 --- 

创建:/home/docker_redis/conf
创建:/home/docker_redis/data ze yes
#设置进程锁文件
pidfile /redis/redis.pid
#端口
port 6379
#客户端超时时间
timeout 1500
#日志级别
loglevel debug
#日志文件位置
logfile /log/log-docker_redis.log
#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 8
##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#save <seconds> <changes>
#Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
#可以关闭该#选项,但会导致数据库文件变的巨大
rdbcompression yes
#指定本地数据库文件名
dbfilename dump.rdb
#指定本地数据库路径
dir /redis/db/
#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
#的数据会在一段时间内只存在于内存中
appendonly no
#指定更新日志条件,共有3个可选值:
#no:表示等操作系统进行数据缓存同步到磁盘(快)
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
#everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
#redis配置外网访问:
protected-mode no #配置密码
requirepass 123456 运行命令: 如redis为例:
docker run -d --privileged=true -p 56379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis_56379 redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456 映射ip 56379->6379 映射宿主机文件夹(配置文件和数据) 启动redis-server 按配置文件启动 密码规定为123456

Docker部署nginx进行反向代理

docker pull nginx
创建对应文件夹,进行目录映射 运行nginx镜像:
docker run --name nginx-80 -d -p 80:80 -v /home/docker_nginx/html:/usr/share/nginx/html -v /home/docker_nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/docker_nginx/conf.d:/etc/nginx/conf.d nginx ip映射80,文件夹映射,注意nginx.conf:ro 可读权限,conf.d目录下存放对应的配置即可

Nginx配置说明:

nginx.conf  核心配置,可不用修改
user nginx;
worker_processes 1; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on;
include /etc/nginx/conf.d/*.conf;
}

Nginx - conf.d目录下配置,针对每一个域名的具体配置

说明:一个域名对应一个文件,如kkzhilu.cn为例
upstream tomcat {
#内网IP,然后限制8080端口对外访问,即可保证用户只从nginx进入,提高访问上限
#另外,如微服务架构的话,限制端口,也可以保证用户只能从网关层进入,保证后台服务的安全
server 172.21.0.8:8080;
} server {
listen 80;
server_name localhost; location / {
proxy_pass http://tomcat;
}
}

参考博文:

docker 快速部署tomcat:https://blog.csdn.net/weixin_39835887/article/details/84516595

51博客:https://blog.51cto.com/11134648/2160257

菜鸟教程

how2j

博客园创建安装基本命令等:https://www.cnblogs.com/lsgxeva/p/8746644.html

镜像制作:https://www.cnblogs.com/iloverain/p/8980275.html

docker 快速部署redis:https://blog.csdn.net/wcuuchina/article/details/86355362

Docker制作镜像推送到仓库

博文地址:https://www.cnblogs.com/yaohong/p/9221800.html

1.制作镜像,可以从公网随意拉一个容器,本地运行,再把它变成镜像即可
2.比如我拉取了tomcat镜像,配置之后会变成容器
3.把最终的运行容器变成镜像 先停止容器运行,再执行:
docker commit -m "my_tomcat" -a "kerwin" tomcat-8080 kerwin_tomcat_8080:v1.0
-m 描述,-a作者 后面是镜像名,然后的推送之后的镜像名最后是版本号 打标,通过images拿到对应镜像的id,再给它重新打标
docker tag 179396596cbd 806857264/kerwin_docker:kerwin_tomcat_8080
docker --- 命令
tag --- 命令
179396596cbd --- 镜像id
806857264/kerwin_docker: --- 用户名和仓库名(仓库没有的话自动创建,所以不用自己去建)
kerwin_tomcat_8080 --- 取的是commit的最终镜像名 最后是push
docker push 806857264/kerwin_docker:kerwin_tomcat_8080
kerwin_tomcat_8080 就是上文打标的目标镜像 去官网:https://cloud.docker.com/repository/list
检查即可 注:为什么要commit推送, 因为在容器内部修改的,配置的文件,在关闭启动之后,会消失,所以,如果有改动内部文件,则需要制作新的镜像,然后推送,如果仅仅是宿主机目录的变化的话,是不需要重新制作镜像的

Docker部署第三方Jar包

指导博文:https://www.cnblogs.com/bxssjava/p/9978449.html

第一步:准备好一个正常完好的jar
第二步:Dockerfile文件 注意不要有后缀 FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/demo_test_nginx-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 第三步:在linux服务器指定的目录下,放好jar和dockerfile文件 第四步:docker build -t 【镜像名字】 .
注意上面的. 表示此目录 第五步:正常运行即可
如:docker run --name demo-10909 -p 10909:10909 -d viando/demo

Docker 自动化部署 - shell命令

创建  docker.sh文件,写入以下命令,将之和jar以及Dockerfile放在一个目录,必要的时候修改 app名,容器名或者镜像名即可
注意必要情况修改端口映射 #!/bin/bash
#JAR 名称 - 替换即可
APP_NAME=demo_test_nginx-0.0.1-SNAPSHOT.jar #容器名称 - 替换即可
CONTAINER_NAME=demo-10909 #镜像名称 - 替换即可
IAMGE_NAME=viando/demo #使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|build] desc: start is for run jar and build is build images for docker"
exit 1
} #启动方法-包含build过程
start(){
build
docker run --name $CONTAINER_NAME -v /home/log:/log -p 10909:10909 -d $IAMGE_NAME
#挂载日志
} #构建image方法
build(){
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
docker rmi $IAMGE_NAME #构建
docker build -t $IAMGE_NAME .
} #根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"build")
build
;;
*)
usage
;;
esac

Docker基础使用的更多相关文章

  1. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  2. 【云计算】Docker云平台—Docker基础

    Docker云平台系列共三讲,此为第一讲:Docker基础 参考资料: Docker官方文档:https://docs.docker.com/ Docker从入门到实践:https://yeasy.g ...

  3. Docker基础技术:Linux Namespace(下)

    在 Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中,主 ...

  4. Docker 基础技术:Linux Namespace(下)

    导读 在Docker基础技术:Linux Namespace(上篇)中我们了解了,UTD.IPC.PID.Mount 四个namespace,我们模仿Docker做了一个相当相当山寨的镜像.在这一篇中 ...

  5. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  6. Docker 基础 : 镜像

    目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...

  7. Docker 基础技术之 Linux cgroups 详解

    PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 推荐大家到公众号阅读,那里阅读体验更好,也沉淀了很多篇干货. 前面两篇 ...

  8. docker 基础知识分享ppt

    给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx

  9. 中标麒麟龙芯平台--docker基础镜像制作

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 的出现为开发人员和运维人员带来了极大的便利.Docker在X86下常见的发行版Linux如Ub ...

  10. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

随机推荐

  1. cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3

    cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3 //派生类的构造函数和析构函数//派生类的构造函数(执行步骤)//--执行基类的构造函数//--执行成员对象的构造函数//--执行 ...

  2. Beta冲刺测试随笔

    测试工作安排 人员安排: 余文锦,孙劼成,陈富杰,明锐,王彦杰,陈康杰:测试 杨铭海,张鑫宇测试用例的编写 测试工具选择和运用 本来计划Beta冲刺挑选人员进行测试相关的接触和学习并胜任测试工作,但是 ...

  3. SpringBoot中注入ApplicationContext对象的三种方式

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 在项目中,我们可 ...

  4. Qt布局的简单介绍

    1  介绍 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=25 布局的好处:布局之后,改变主窗口大小,其余窗口可以自适应. 2  布局分类 垂直 ...

  5. shell编程之系统环境变量

    点后面加上空格+配置文件等价于source 配置文件 常见的系统环境变量的配置 Bash_profile和.bashrc存在在家目录下,~表示家目录 [root@localhost home]# cd ...

  6. python黑帽子之udp客户端

    将上文的TCP客户端简单修改便能得到UDP客户端 import socket target_host = "127.0.0.1" target_port = 80 client = ...

  7. 在linux裸机部署springBoot项目

    一.项目创建及打包 创建项目,打jar包 二.安装JDK 1.在/usr目录下床架java文件夹,将 2.下载jdk8,并上传linux服务器(/usr/java) 下载地址:https://www. ...

  8. Zookeeper Watcher 流程分析(结合源码)

    概述 ZK提供了分布式数据的发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能够让多个订阅者同时监听某个主题对象,当这个主题对象自身状态发生变化时,会通知所有的订阅者.在ZK中 ...

  9. 洛谷 P4017 【最大食物链计数】

    看到这种明显的有向无环图,并且等级分明,自然而然就能想到拓补排序啦.对于这道题,我们就可以利用最短路计数的那种思想(不知道也没关系),设\(j\)是\(i\)的后继,\(dis_i\)表示以\(i\) ...

  10. 学习 Spring Boot 知识看这一篇就够了

    从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...