docker安装

方法一:一键安装

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

方法二:常规安装

1.安装yum-utilsyum-utils提供了yum-config-manager管理工具

1
yum install -y yum-utils

2.配置国内镜像源

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

3.安装Docker Engine-Community 和 containerd :

1
yum install docker-ce docker-ce-cli containerd.io

启动docker服务和开机自启:

1
2
systemctl start docker
systemctl enable docker

基础命令:

1
2
3
4
5
6
7
8
9
10
11
12
# 查看镜像
docker images
# 删除镜像
docker rmi <image_id>
# 查看容器
docker container ls
# 启动/重启容器
docker start/restart <container_id>
# 删除容器
docker rm <container_id>
# 查看挂载目录
docker inspect <container_id> | grep "Mounts" -A 20

运行容器

如需指定端口映射使用-p,如需暴露容器所有端口(和宿主机共享网络),使用--net=host

Tomcat8

app根目录上传至服务器,然后将根目录映射至容器/usr/local/tomcat/webapps/目录下:

1
2
3
4
docker run --name={app_name} 
--net=host
-v /root/tomcat/webapps/{app_name}:/usr/local/tomcat/webapps/{app_name}
-d tomcat:8.5.38-jre8

Mysql

1
2
3
4
5
6
7
8
9
10
11
12
docker run --name=mysql 
-p 3306:3306
-v /root/mysql/conf:/etc/mysql/conf.d
-v /root/mysql/logs:/logs
-v /root/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD='password'
-d mysql:5.7 mysqld
--innodb-buffer-pool-size=80M
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--default-time-zone=+8:00
--lower-case-table-names=1

Redis

1
2
3
4
docker run --name=redis 
--net=host
-d redis:latest redis-server
--requirepass "password"

ActiveMQ

1
2
3
4
5
6
7
8
docker run --name=activemq 
-p 8161:8161 # web页面管理端口
-p 61616:61616 # 业务端口
-v /root/activemq/data:/data/activemq
-v /root/activemq/log:/var/log/activemq
-e ACTIVEMQ_ADMIN_LOGIN=admin
-e ACTIVEMQ_ADMIN_PASSWORD={passowrd}
-d webcenter/activemq:latest

MongoDB

1
2
3
4
5
docker run --name=mongodb 
-p 27017:27017
-v /root/mongodb/data:/data/db
-d mongo:4.0.6
--auth

进入容器设置超管账号密码:

1
2
docker exec -it mongodb mongo admin
db.createUser({ user: 'admin', pwd: 'password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

为其他库设置访问权限:

1
2
3
db.auth("admin","password");   #验证超管身份
use yourdatabase;
db.createUser({user:'user',pwd:'password',roles:[{role:'dbOwner',db:'yourdatabase'}]});

ElasticSearch

1
2
3
4
5
6
docker run --name=es
--net=host
-v /root/es/data:/usr/share/elasticsearch/data
-v /root/es/logs:/usr/share/elasticsearch/logs
-e "discovery.type=single-node"
-d elasticsearch:7.3.2

设置访问密码

进入容器:

1
docker exec -it es /bin/bash

编辑配置文件elasticsearch.yml,添加如下内容:

1
2
3
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

重启容器,之后执行如下命令开始设置密码:

1
bin/elasticsearch-setup-passwords interactive

安装分词插件ik

进入容器执行如下命令,然后重启容器,注意选择和es版本匹配的分词插件:

1
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.3.2/elasticsearch-analysis-ik-7.3.2.zip

Kibana

注意镜像使用和es使用一样的版本号:

1
docker pull kibana:7.3.2   

宿主机创建配置文件/root/elk/kibana.yml

1
2
3
4
5
6
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://172.17.0.1:9200" ] # 注意是容器内访问
elasticsearch.username: "kibana" #ES中配置的kibana账号和密码
elasticsearch.password: "password"
xpack.monitoring.ui.container.elasticsearch.enabled: true

运行:
1
2
3
4
5
6
7
8
docker run --name=kibana 
--net=host
-v /root/elk/kibana.yml:/usr/share/kibana/config/kibana.yml
-d kibana:7.3.2
--log-driver json-file
--log-opt max-size=100m
--log-opt max-file=2
--restart=always

Nacos

事先准备好配置文件/root/nacos/conf/application.properties

1
2
3
4
5
6
7
8
9
10
11
docker run --name=nacos 
-p 8848:8848
-p 9848:9848
-p 9849:9849
-v /root/nacos/logs/:/home/nacos/logs
-v /root/nacos/conf/application.properties:/home/nacos/conf/application.properties
-e MODE=standalone
-e JVM_XMS=512m
-e JVM_XMX=512m
-e JVM_XMN=256m
-d nacos/nacos-server

Nginx

1
2
3
4
5
6
7
docker run --name=nginx 
--net=host
-v /root/nginx/html:/usr/share/nginx/html
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /root/nginx/logs:/var/log/nginx
-v /root/nginx/conf.d:/etc/nginx/conf.d
-d nginx

注意:如果指定了-v,则宿主机目录会覆盖容器目录(-v的参数只能是目录)。如果需要使用自定义配置,则应在nginx.confconf.d存入配置文件再启动,否则应取消这2个-v,以使用默认配置。

其他

修改容器时区为中国时区

1
docker cp /usr/share/zoneinfo/Asia/Shanghai {container_id}:/etc/localtime

FAQ

Centos安装docker报错

如果安装docker时出现了container-selinux >= 2.9错误,类似如下:

1
2
3
4
5
6
Error: Package: containerd.io-1.2.13-3.2.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
Error: Package: 3:docker-ce-19.03.12-3.el7.x86_64 (docker-ce-stable)
Requires: container-selinux >= 2:2.74
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

这个报错是container-selinux版本低或者是没安装的原因,yum 安装container-selinux一般的yum源又找不到这个包,需要安装epel源才能yum安装container-selinux,然后再安装docker-ce就可以了。

1
2
3
4
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release
yum makecache
yum install container-selinux