docker-doc-常用归纳

mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 拉取mysql
docker pull mysql:5.7

# 创建mysql专用网络
docker network create --subnet=172.19.0.0/24 mysql-net

# 运行mysql
docker run -d -p 3301:3306 --net=mysql-net --ip 172.19.0.2 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged --name=mysql1 mysql:5.7

# 进入mysql
docker exec -it mysql1 bash

# 登录mysql
mysql -uroot -p123456

# 查看mysql容器的gateway
docker container inspect mysql1 # "Gateway": "172.19.0.1"

# linux连接docker的mysql
1:docker exec -it mysql1 mysql -uroot -p
2:mysql -h172.19.0.1 -P3301 -uroot -p123456

ftp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 拉取vsftp
docker pull fauria/vsftpd

# 启动ftp
docker run -d -p 21:21 -p 20:20 -p 21100-21110:21100-21110 \
-v /data/vsftpd:/home/vsftpd \
-e FTP_USER=popoftp -e FTP_PASS=ftp123456 \
-e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd1 --restart=always fauria/vsftpd

# 设置中文
docker exec -i -t vsftpd bash
vi /etc/profile
# 添加
export LANG=en_US.utf8
# 重启配置
source /etc/profile

# FileZilla Client连接要选 明文FTP

https://www.jianshu.com/p/c84f6e6de002

mongo

1
2
3
4
5
6
7
8
9
10
11
12
# 拉取mongo
docker pull mongo:3.6.15

# 创建mysql专用网络
docker network create --subnet=172.20.0.0/24 mongo-net

# 运行mongo
docker run --name mongo1 -p 27017:27017 -d --net=mongo-net -v /data/mongo/db:/data/db -v /data/mongo/backup:/data/backup -v /data/mongo/configdb:/data/configdb mongo:3.6.15 --auth

# 进入mongo
docker exec -it mongo1 bash
docker exec -it mongo1 mongo -uxxx -pxxx

创建用户一直提示失败

  • 有可能是以前数据没删除干净,以前用户保留了
  • 以不是auth的方式创建一次docker,先创建了用户后关闭,在重新创建auth的mongo

zookeeper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取zookeeper
docker pull zookeeper

# 启动
docker run --privileged=true -d -v /data/zookeeper/data:/data -v /data/zookeeper/conf:/conf --name zookeeper --publish 2181:2181 zookeeper:latest

docker run -d -v /data/zookeeper/data:/data -v /data/zookeeper/conf:/conf --name zookeeper --publish 2181:2181 zookeeper:latest

# 进入zookeeper的docker
docker exec -it zookeeper bash

# 连接zookeeper
./bin/zkCli.sh -server
./bin/zkCli.sh -server 192.168.75.130:2181

redis

自定义redis.conf的时候,redis.conf 中需要daemonize=NO,非后台模式,如果为YES 会的导致 redis 无法启动,因为后台会导致docker无任务可做而退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 拉取redis
docker pull redis

# 创建redis专用网络
docker network create --subnet=172.101.0.0/24 redis-net

# 启动数据服务器
# port 6301
# dir /data/cache
# logfile "/var/log/redis/redis.log"
# 启动服务器
# --appendonly yes
# 注意log文件的权限 chmod a+rw
docker run -p 6301:6301 --name redis001 --net=redis-net -v /data/redis001/conf/redis.conf:/etc/redis/redis.conf -v /data/redis001/data:/data/cache -v /data/redis001/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes

# 启动哨兵服务器
docker run -p 6311:6311 --name redis011 --net=redis-net -v /data/redis011/conf/redis.conf:/etc/redis/redis.conf -v /data/redis011/data:/data -v /data/redis011/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes

# 进入redis的docker
docker exec -it redis001 /bin/bash

蠢方法

进入docker在创建日志文件,然后重新启动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -it --name redis-3 -v /root/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash

# 以交互模式进入容器redis-3
docker exec -it redis-3 bash

# 创建日志文件目录
mkdir /var/log/redis/
touch /var/log/redis/redis.log

# 启动redis服务器,如果没有任何输出,就说明成功了
redis-server /usr/local/etc/redis/redis.conf

# 在容器里启动一个redis客户端
redis-cli

集群测试

  1. 如果是同一台机器搭建,所有的数据服务器的端口号不要一样,不然只会有一台从服务器给哨兵识别。
  2. 如果是同一台机器搭建,所有的哨兵的端口号最好也不要一样。
  3. 如果是同一台机器搭建,所有的哨兵的pid不要一样。
redis.conf特殊处理
1
2
3
4
5
# 关闭只允许本地ip连接
# bind 127.0.0.1

# 开启运行远程连接
protected-mode no
命令参考
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# 机器信息 
# 同一台机器搭建
# 内网ip:172.26.245.222

# 创建redis专用网络
docker network create --subnet=172.101.0.0/24 redis-net

# 主数据服务器
# port 6301
# 启动服务器
docker run -p 6301:6301 --name redis001 --net=redis-net -v /data/redis001/conf/redis.conf:/etc/redis/redis.conf -v /data/redis001/data:/data/cache -v /data/redis001/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes
# 连接redis
redis-cli -p 6301

# 从数据服务器1
# port 6311
# 启动服务器
docker run -p 6311:6311 --name redis011 --net=redis-net -v /data/redis011/conf/redis.conf:/etc/redis/redis.conf -v /data/redis011/data:/data/cache -v /data/redis011/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes
# 连接redis
redis-cli -p 6311
# 设置主服务器
slaveof 172.26.245.222 6301

# 从数据服务器2
# port 6312
# 启动服务器
docker run -p 6312:6312 --name redis012 --net=redis-net -v /data/redis012/conf/redis.conf:/etc/redis/redis.conf -v /data/redis012/data:/data/cache -v /data/redis012/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes
# 连接redis
redis-cli -p 6312
# 设置主服务器
slaveof 172.26.245.222 6301

# 从数据服务器3
# port 6313
# 启动服务器
docker run -p 6313:6313 --name redis013 --net=redis-net013 -v /data/redis013/conf/redis.conf:/etc/redis/redis.conf -v /data/redis013/data:/data/cache -v /data/redis013/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/redis.conf --appendonly yes
# 连接redis
redis-cli -p 6313
# 设置主服务器
slaveof 172.26.245.222 6301

# 启动哨兵服务器1
# port 26311
# sentinel myid 08eb655207b21d9844a6a079d38745475a7373s1
# sentinel monitor mymaster 172.26.245.222 6301 2
# 启动服务器
docker run -p 26311:26311 --name redis021 --net=redis-net -v /data/redis021/conf/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis021/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/sentinel.conf --sentinel
# 连接redis
redis-cli -p 26311
# 查看集群
info sentinel

# 启动哨兵服务器2
# port 26312
# sentinel myid 08eb655207b21d9844a6a079d38745475a7373s2
# sentinel monitor mymaster 172.26.245.222 6301 2
# 启动服务器
docker run -p 26312:26312 --name redis022 --net=redis-net -v /data/redis022/conf/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis022/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/sentinel.conf --sentinel
# 连接redis
redis-cli -p 26312
# 查看集群
info sentinel

# 启动哨兵服务器3
# port 26313
# sentinel myid 08eb655207b21d9844a6a079d38745475a7373s3
# sentinel monitor mymaster 172.26.245.222 6301 2
# 启动服务器
docker run -p 26313:26313 --name redis023 --net=redis-net -v /data/redis023/conf/sentinel.conf:/etc/redis/sentinel.conf -v /data/redis023/log/redis.log:/var/log/redis/redis.log -d redis redis-server /etc/redis/sentinel.conf --sentinel
# 连接redis
redis-cli -p 26313
# 查看集群
info sentinel

# 关闭主节点
docker stop redis001

https://www.cnblogs.com/fan-gx/p/11463400.html

memcached

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 拉取memcached
docker pull memcached

# 创建mysql专用网络
docker network create --subnet=172.71.0.0/24 memcached-net

# 启动memcached
docker run -d -p 11211:11211 --net=memcached-net --name memcached01 memcached

# 测试
telnet xx.xxx.xx.xx 11211

set h1 0 900 6
123456

gitbook

1
2
3
docker run -v /data/gitbook:/srv/gitbook -v /data/gitbook/html:/srv/html --name gitbook fellah/gitbook build . /srv/html
docker run -v /data/gitbook:/srv/gitbook -v /data/gitbook/html:/srv/html fellah/gitbook gitbook build . /srv/html
docker run --name my-nginx -v /data/gitbook/html:/usr/share/nginx/html -d -p 8080:80 nginx

nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 拉取版本
docker pull nginx:1.15.3
# 目录创建
mkdir /data/nginx
mkdir /data/nginx/logs
mkdir /data/nginx/conf
mkdir /data/nginx/www
mkdir /data/nginx/vhost
mkdir /data/nginx/html
# 在conf目录创建自己的nginx.conf
# 启动
docker run -d \
-p 80:80 \
-p 443:443 \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
-v /data/nginx/conf.crt:/etc/nginx/conf.crt \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/html:/usr/share/nginx/html \
--name nginx1 nginx:1.15.3

gitlab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 拉取版本
#docker pull gitlab/gitlab-ce:rc
docker pull gitlab/gitlab-ce:12.10.3-ce.0

# 目录创建
mkdir -p /data/gitlab/config
mkdir -p /data/gitlab/logs
mkdir -p /data/gitlab/data

# 启动
docker run \
-d \
--restart unless-stopped \
-p 3380:80 \
-p 3322:22 \
-p 3443:443 \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
--name gitlab gitlab/gitlab-ce:12.10.3-ce.0

# 修改gitlab.rb
vim /data/gitlab/config/gitlab.rb
# 找到external_url的注释,并在下面添加自己的自定义
# external_url 'GENERATED_EXTERNAL_URL'
external_url 'http://xxxx.okeyfun.com'

# 修改gitlab.yml
vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml
# 找到修改host的地方
host: xxxx.okeyfun.com
port: 80
https: false

# 重启gitlab
docker restart gitlab

使用外部nginx进行域名配置和跳转gitlab

1
2
3
4
5
6
7
8
server {
listen 80;
server_name xxxx.okeyfun.com;

location / {
proxy_pass http://内网ip:3380;
}
}

jenkins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 拉取版本
docker pull jenkins/jenkins:centos7

# 目录创建
mkdir -p /data/jenkins
chown 1000:1000 /data/jenkins

# 启动
docker run -itd \
-p 8080:8080 \
-p 50000:50000 \
-v /data/jenkins:/var/jenkins_home \
--privileged=true \
--name jenkins jenkins/jenkins:centos7

# 查看初始密码:
cat /data/jenkins/secrets/initialAdminPassword

# 安装插件
# 只安装推荐插件就好了

ansible-tower

1
2
3
4
5
6
7
8
9
# 拉取
docker pull ybalt/ansible-tower:latest

#
docker run -d -p 6643:443 -v /data/ansible:/var/lib/postgresql/9.6/main --name ansible ybalt/ansible-tower
docker run -d -p 6643:443 --name ansible ybalt/ansible-tower

docker create -v /var/lib/postgresql/9.6/main --name tower-data ybalt/ansible-tower /bin/true
docker run -d -p 443:443 --name tower --volumes-from tower-data ybalt/ansible-tower

gitbook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1. 拉取或下载gitbook
https://github.com/GitbookIO/gitbook

# 2. 在项目目录创建Dockerfile
vim Dockerfile
# 2.1 下面的是内容
FROM node:20.16

WORKDIR /app

COPY package.json .
RUN npm install

COPY . .

EXPOSE 4000

CMD ["npm", "start"]

# 3. 构建docker镜像
docker build -t gitbook .

# 4. 运行docker容器
docker run -p 8639:4000 gitbook