Docker 常用命令及环境配置,Nginx-Mysql-Redis-Zookeeper

436 阅读7分钟

背景

自从去年双 11,百度云 特价淘了一台服务器之后,就开始自己的瞎捣鼓之旅,各种瞎折腾,这里还留存着当时捣鼓 Docker 的文档,每次使用时都会打开看看,这次正好记录在我的博客上,方便个人查看以及帮助需要的人。

Docker 一个开源的应用容器引擎

我也是一位 Docker 新手,但是老规矩,第一步依然先简单介绍下 Docker,都是官方教程摘抄的,保证正确。在此贴上相关链接: Docker 官网 Github Docker 源码

Docker 介绍

  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker 的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

  1. **简化程序:**Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker 改变了虚拟化的方式,使开发者可以直接将自己的成果放入 Docker 中进行管理。方便快捷已经是 Docker 的最大优势,过去需要用数天乃至数周的 任务,在 Docker 容器的处理下,只需要数秒就能完成。
  2. **避免选择恐惧症:**如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
  3. **节省开支:**一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

环境配置

下面就开始个人的初步之旅,由于本人 Docker 技术比较菜,如果有错,欢迎指正。

菜 菜 菜

Docker 安装

因为我安装是基于 linux 的,直接贴命令。

# 安装Docker,需要Linux内核版本 3.10及以上,可使用uname –r 查看
yum install docker
# 启动Docker
systemctl start docker
# 设置开机启动
systemctl enable docker
# 关闭Docker
systemctl stop docker

等待安装完成,至此 Docker 安装就 OK 了,是不是很简单。

Docker 常用命令

既然 Docker 安装完成了,下面先记录下 docker 的一些常用基础命令。

镜像操作

# 搜索镜像
docker search + [关键字]
# 下载镜像,tag 标签可选,是下载的镜像版本号,默认是latest
docker pull + 镜像名[:tag]
# 查看安装的所有镜像
docker images
# 删除指定的本地镜像
docker rmi + [镜像id]

说到镜像,这里就提供两个镜像市场,可以提供可用的镜像搜索,版本查看,使用方法以及使用配置等 Docker 官方DaoCloud

容器操作

# 查看运行容器
docker ps
# 查看所有容器,包含正在运行的容器和未运行的容器
docker ps -a
# 创建容器,--name 容器命名,-p 端口映射 宿主机:容器,–restart=always 设置容器跟随Docker启动,-d 需要使用的镜像,参数比较多,请百度查看详细命令,
docker run [--name + 容器名] [–restart=always] [-p hostPort:containerPort] -d + 镜像id/镜像名称[:tag]
# 启动或关闭容器
docker start/stop + 容器id/容器名
# 删除创建的容器
docker rm + 容器id/容器名
# 进入容器
docker exec –it 容器id/容器名 bash

Docker 常用软件安装

这里介绍的是我搭建服务器时安装的常用软件,主要是贴搭建时的命令和基础配置。

Mysql

  1. 下载 mysql 镜像,可以根据需要下载,我下载了最新版本和 5.7.24 版本镜像

    # 下载mysql 最新镜像
    docker pull mysql
    # 下载mysql5.7.24 版本镜像
    docker pull mysql:5.7.24
    
  2. 创建 mysql 容器,可以创建多个 mysql 容器,容器内的 mysql 默认端口是 3306,一般不用修改这个端口,只需要对应宿主机的映射端口不同就可以了。

    # 创建mysql 容器
    docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qll5201314 -d mysql  --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    # 如果需要可以 进入mysql 容器进行mysql 配置
    docker exec -it mysql01 bash
    

    上面创建了一个容器名称为 mysql01 服务端口 3306 映射为 3306 密码为 qll5201314 的 mysql 容器。

  3. 如果安装是最新的 mysql 可能会导致 mysql 连接出现 1251 的错误,主要是因为新的 mysql 密码加密方式更换了。解决方法有两个,一个是下载最新的 Navicat,或者按照如下方式修改:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
    
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qll201314';
    
    FLUSH PRIVILEGES;
    

Nginx

  1. 下载 nginx 镜像

    # 下载最新nginx镜像
    docker pull nginx
    
  2. 创建容器

    # 创建容器
    docker run --name nginx01 -p 80:80 -p 443:443 -v /home/web:/home/web -v /root/config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /root/config/nginx/conf.d:/etc/nginx/conf.d:rw -v /root/config/nginx/logs:/var/log/nginx -v /root/config/ssl:/ssl:rw -d nginx
    

    上面创建了一个容器名为 nginx01,端口映射为 容器端口 80 443 映射宿主机 80 和 443 端口的容器,其中出现了一个 -v 参数,该参数是指容器内文件地址和宿主机文件地址的映射,例如上面的 -v /root/config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro表示容器内/etc/nginx/nginx.conf文件指向宿主/root/config/nginx/nginx.conf,也就是说在容器内访问 nginx.conf 其实就是访问宿主机内的 nginx.conf 文件,后面的 ro,rw 是指读写权限,可以自定义。我的创建中做了端口映射,nginx 配置文件映射,web 资源目录映射,ssl 地址映射等等。

Redis

哎呀,写的累了,这个就直接贴命令吧。

# 下载redis 最新镜像
docker pull redis
# 创建容器
docker run --name redis01 -p 6379:6379 -d --restart=always redis:latest redis-server --appendonly yes --requirepass  "qll5201314"

到此一个可用的 redis 服务就创建好了,是不是很简单。

Zookeeper

Zookeeper 的搭建相对复杂一点,但是也没那么难,下面跟着步骤一步一步来

  1. 创建并进入容器

    # 拉取镜像
    docker pull zookeeper
    # 创建容器
    docker run --name zookeeper01 –p 2281:2281 -d zookeeper
    # 进入容器
    docker exec –it zookeeeper01 bash
    
  2. 开始进行配置 vi conf/zoo.cfgclientPort=2181后面增加一行server.1=127.0.0.1:2888:3888,然后保存;

  3. 创建 data 目录,以及一个 myid 文件,如果已经存在则不需要创建,修改 myid 使内容为 1,vi myid,修改值为 1,然后保存即可;

  4. cat myid显示内容为 1,做个验证;

  5. 重启 bin/zkServer.sh restart

  6. 配置防火墙等设置,让外网可以访问,设置 2181,2888,3888 三个端口,如果需要可能还要修改服务器策略,这个与云平台有关系。

    firewall-cmd --zone=public --add-port=2181/tcp --permanent
    firewall-cmd --zone=public --add-port=2888/tcp --permanent
    firewall-cmd --zone=public --add-port=3888/tcp -permanent
    firewall-cmd --reload
    

总结

到此 Docker 的基本使用和部分环境的搭建就结束了,整个流程走下来肯定有很多弯弯绕啦,可是我不说,嘿嘿,到此结束,over~~~~