Docker常用容器的安装

前一阵重做了自己PC上的Ubuntu系统,顺便把所有占用端口的软件都用Docker重构了,

把重构过程纪录了一下,攒鸡毛凑掸子写成此文。

一些比较基础的软件如JDK则没有重构。

本文环境为Ubuntu系统,Fuck CentOS。

Linux最重要的概念是权限,我在操作docker的时候为了安全起见,没有使用sudo,而是直接输入,再配合pip3的thefuck进行命令补全,所以本文是以普通用户操作,所有命令都需要提权sudo。


按本人习惯,所有容器映射到本地的位置为/opt/docker/CONTAINER_NAME

docker也有windows版,我个人的windows版docker容器映射位置是 d:\\programming\\docker\\container\\CONTAINER_NAME,注意windows下要有转义符两个反斜杠。


0.0、Docker的安装

#使用如下脚本一键安装

curl -fsSL get.docker.com -o get-docker.sh 

sh get-docker.sh --mirror Aliyun

#为方便连接数据库,在本机hosts中为docker设置虚拟域名

vim /etc/hosts

#添加如下

172.17.0.1 docker

#本文所介绍容器均安装在PC上,为节省内存,只有portainer设置了开机自启,其他容器均未设置开机自启,

#设置开机自启的方式如下

#创建名为xxx的容器时设置开机自启

docker run -d -p xxxx:xxxx --restart=always -v /xxx/xxx:/xxx/xxx --name xxx

#为已有的容器设置开机自启

docker update --restart=always xxx

#取消开机自启

docker update --restart=no xxx



0.1、配置docker 的163镜像

vim /etc/docker/daemon.json

#填入以下内容

{

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

}

#重启docker

server restart docker


#docker容器可以理解为一个个单独的系统,当需要修改配置文件时,可以修改挂载在宿主机上的配置文件,也可以进入容器后修改源配置文件,但进入容器再修改需要安装vim,方法如下:

#进入容器

docker exec -it xxx bash

#更新容器软件源

 apt update

#安装vim

apt install vim

1、容器安装 

1.1、Portainer

#利用web来管理docker容器

docker pull portainer/portainer

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer

#浏览器打开 ip:9000进行设置,设置用户名和密码,选择localhost


1.2、MySQL

1.2.1、MySQL5.7

docker pull hub.c.163.com/library/mysql:5.7

docker run -p 3306:3306 --name mysql57 -v /opt/docker/mysql57/conf:/etc/mysql/conf.d -v /opt/docker/mysql57/logs:/logs -v /opt/docker/mysql57/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql:5.7


1.2.2、MySQL8.0

docker pull hub.c.163.com/library/mysql:8

docker run -p 3306:3306 --name mysql80 -v /opt/docker/mysql80/conf:/etc/mysql/conf.d -v /opt/docker/mysql80/logs:/logs -v /opt/docker/mysql80/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql:8.0 --lower_case_table_names=1 --character-set-server=utf8


#注意结尾一定要有 --lower_case_table_names=1和 --character-set-server=utf8,第一句是因为mysql8.0只有在初始化时才允许设置大小写不敏感,初始化完成后,不再允许设置,第二句是因为我不知道怎么修改mysql8的字符集。。



#登录mysql

mysql -h docker  -u root -p

#因为前面设置了docker 的hosts,所以这里docker=172.17.0.1=你的docker地址


#设置密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MIMA';

#添加远程登录用户

CREATE USER 'YONGHUMING'@'%' IDENTIFIED WITH mysql_native_password BY 'MIMA';

#给予权限

#MySQL 5.7版本:

GRANT ALL PRIVILEGES ON *.* TO 'YONGHUMING'@'%';

#MySQL 8.0版本:

# 文章修改时间 2019-04-12 15:45

grant all privileges on *.* to 'YONGHUMING'@'%' with grant option;



1.3、Oracle DB 11g

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 

docker run -d -p 1521:1521 -v /opt/docker/oracle/data/oracle:/data/oracle --name oracle11 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#配置

#进入容器,这个容器是以CentOS为基础的,very not friendly

#文章修改时间 2019-04-12 15:45

docker exec -it --user root oracle11 /bin/bash

yum install vim

#修改/etc/profile 在尾部添加如下字段

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2    #安装位置

export ORACLE_SID=helowin    #数据库 SID

export PATH=$ORACLE_HOME/bin:$PATH


#切换用户

su - oracle 

sqlplus /nolog

conn /as sysdba

alter user system identified by system;        #修改system用户账号密码;

alter user sys identified by system;            #修改sys用户账号密码;

create user YONGHUMING identified by MIMA;     #创建内部管理员账号;

grant connect,resource,dba to YONGHUMING;     #提权

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;     #修改密码规则策略为密码永不过期;

alter system set processes=1000 scope=spfile;     #修改数据库最大连接数据;

exit

#重启数据库

sqlplus /nolog

conn /as sysdba

shutdown immediate;

startup;

exit


#安装完成后,还要修改字符集为UTF8

#Server端字符集修改

#将数据库启动到RESTRICTED模式下做字符集更改:

sqlplus "/as sysdba"

conn /as sysdba;

shutdown immediate;

startup mount;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

alter database open;

alter database character set INTERNAL_USE UTF8;

shutdown immediate;

startup;

exit;


1.4、Tomcat

#文章修改时间 2019-04-12 15:47

# 动态IP的Tomcat的方法

docker run --name tomcat8080 -p 8080:8080 -v /opt/docker/tomcat8080/:/usr/local/tomcat/webapps -d hub.c.163.com/library/tomcat

# 创建静态IP的Tomcat的方法写在Nginx实现负载均衡里

1.5、Nginx

1.5.1、 Docker安装Nginx并mount外部配置文件

1.5.2、 Docker安装的Nginx实现负载均衡

1.6、Apache2 + php7

#PHP还有人用?

1.6.1、创建容器

sudo docker run -p 80:80 -p 443:443 -v /opt/docker/apache-php/www:/var/www/html -d eboraas/apache-php apache-php


1.6.2、 Apache2 负载均衡

//TODO

1.7、ElasticSearch

//TODO


1.8、Solr

//TODO


1.9、Redis

文章修改时间:2019-04-13 17:54:47

1.9.0 安装redis客户端

sudo apt install redis-tools


1.9.1、单机redis

sudo docker run --net=mynetwork --ip=172.18.0.200  --name=redis32-master -p 6379:6379 -v /opt/docker/redis32/master-slave/master/data:/data -d hub.c.163.com/library/redis:3.2 redis-server --appendonly yes

1.9.2、主从

#在创建1.9.1的单机容器之后,继续创建下面的容器

sudo docker run --net=mynetwork --ip=172.18.0.201  --name=redis32-slave1 -p 6380:6379 -v /opt/docker/redis32/master-slave/slave1/data:/data -d hub.c.163.com/library/redis:3.2 redis-server --slaveof 172.18.0.200 6379

sudo docker run --net=mynetwork --ip=172.18.0.202  --name=redis32-slave2 -p 6381:6379 -v /opt/docker/redis32/master-slave/slave2/data:/data -d hub.c.163.com/library/redis:3.2 redis-server --slaveof 172.18.0.200 6379

#测试

Docker常用容器的安装_第1张图片


1.9.3、集群

#关掉或者删除上面创建的所有redis容器

#集群的创建需要至少3个实例,使用如下的配置文件来实现

#创建目录

sudo mkdir /opt/docker/redis32/cluster

#创建名为redis32-cluster-redis1.conf并拷贝至/opt/docker/redis32/cluster目录下,内容如下

port 6382

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

#复制出另外两份配置文件

cd /opt/docker/redis32/cluster

cp redis32-cluster-redis1.conf redis32-cluster-redis2.conf

sed -i ‘s/6382/6383/’ redis32-cluster-redis2.conf

cp redis32-cluster-redis1.conf redis32-cluster-redis3.conf

sed -i ‘s/6382/6384/’ redis32-cluster-redis2.conf


#创建容器

sudo docker run --net=mynetwork --ip=172.18.0.203  --name=redis32-cluster-redis1  -v /opt/docker/redis32/cluster/redis1/data:/data -v /opt/docker/redis32/cluster/redis32-cluster-redis1.conf:/usr/local/etc/redis/redis.conf -d hub.c.163.com/library/redis:3.2 redis-server /usr/local/etc/redis/redis.conf



sudo docker run --net=mynetwork --ip=172.18.0.204  --name=redis32-cluster-redis2  -v /opt/docker/redis32/cluster/redis2/data:/data -v /opt/docker/redis32/cluster/redis32-cluster-redis2.conf:/usr/local/etc/redis/redis.conf -d hub.c.163.com/library/redis:3.2 redis-server /usr/local/etc/redis/redis.conf



sudo docker run --net=mynetwork --ip=172.18.0.205  --name=redis32-cluster-redis3  -v /opt/docker/redis32/cluster/redis3/data:/data -v /opt/docker/redis32/cluster/redis32-cluster-redis3.conf:/usr/local/etc/redis/redis.conf -d hub.c.163.com/library/redis:3.2 redis-server /usr/local/etc/redis/redis.conf



#我们用redis-trib.rb来创建集群

#注意:上面我们安装的版本是3.2.10,所以客户端也要用3.2.10对应版本

#到官网下载对应的版本

http://download.redis.io/releases/



#解压后提取src目录下的redis-trib.rb文件并且拷贝到/opt/docker/redis32/cluster/

cd /opt/docker/redis32/cluster

ruby redis-trib.rb  create  172.18.0.203:6382 172.18.0.204:6383 172.18.0.205:6384


#测试

Docker常用容器的安装_第2张图片


1.9.4、主从集群

//TODO 


1.10、RabbitMQ

//TODO


1.11、Jenkins

//TODO

1.12、MongoDB

//TODO

你可能感兴趣的:(Docker常用容器的安装)