Docker使用经验手册
# Docker 安装
# Docker常用命令
#启动docker
systemctl start docker
# 守护进程重启
sudo systemctl daemon-reload
#重启docker服务
systemctl restart docker
#重启docker服务
sudo service docker restart
#服务重启之后保证docker服务自启动
systemctl enable docker.service
#关闭docker
service docker stop
#关闭docker
systemctl stop docker
#搜索镜像
docker search 镜像名字
#构建一个docker 本地镜像
#拉取镜像到本地(name镜像名称,latest tag版本)
docker pull mysql:latest
#列出本地镜像
docker images
#删除镜像
docker rmi IMAGE_ID
#创建一个新的容器并运行一个命令
docker run
# 查看所有的容器
docker ps -a
#删除容器
docker rm 容器id
#关闭容器
docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
docker stop -t=60 容器ID或容器名
#如果已经启动过容器,可用如下命令修改自启动:
docker update --restart=always <CONTAINER ID>
#重启容器
docker restart 容器ID或容器名
#启动一个已经停止的容器实例,建议使用容器ID
docker start 容器ID或容器名
# 进入容器的命令行
docker exec -it 容器id /bin/bash
#以root身份进入容器内部命令行
docker exec -it -u root 容器id /bin/bash
# 进入容器日志
docker logs 容器id
# 查看容器ip
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
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
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
# Docker安装portainer
- 拉取 MySQL 镜像:这里我们拉取官方的最新版本的镜像
#拉取portainer镜像
docker pull portainer/portainer
#创建数据券
# docker volume create portainer_data
#启动容器
#docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --#name single-portainer portainer/portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name single-portainer portainer/portainer
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# Docker安装mysql
#拉取5.7MySQL镜像
docker pull mysql:5.7
#mysql第一次启动挂载本地(挂载的路径和文件是否创建2.注意检查挂载的文件是否为文件而不是目录)
docker run -p 3306:3306 --name mysql \
-v /docker/mysql/conf:/etc/mysql \
-v /docker/mysql/logs:/var/log/mysql \
-v/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root\
-d mysql:5.7
#修改mysql 编码配置 修改文件/docker/mysql/conf/my.cnf
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
重启容器即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Docker安装Redis
#拉取最新redis镜像
docker pull redis:latest
#后台运行容器
docker run -d --restart=always --name redis -p 6379:6379 redis
1
2
3
4
5
6
2
3
4
5
6
# Docker安装Sql Server
#拉取最新sqlserver镜像
docker pull microsoft/mssql-server-linux
#后台运行容器
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Arnold@123" -p 1433:1433 --name sql-server -d mcr.microsoft.com/mssql/server:2019-latest
1
2
3
4
5
6
7
2
3
4
5
6
7
# Docker安装gitlab
#gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
docker pull gitlab/gitlab-ce
docker run -d -p 8443:443 -p 8080:80 -p 8222:22 --name gitlab --restart always -v /docker/gitlab/config:/etc/gitlab -v /docker/gitlab/logs:/var/log/gitlab -v /docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
#参考链接 https://www.jianshu.com/p/0bc9b4755082
#遇到Failed to connect to gitlab port 80: Connection refused 参考链接 https://blog.csdn.net/qq_38762237/article/details/109181611
1
2
3
4
5
6
7
2
3
4
5
6
7
# Docker安装rocketmq
#拉取server镜像
docker pull foxiswho/rocketmq:server-4.7.0
#拉取broker镜像
docker pull foxiswho/rocketmq:broker-4.7.0
#拉取console镜像
docker pull styletang/rocketmq-console-ng
#启动server容器(创建挂载宿主机文件)
docker run -d -p 9876:9876 -v /docker/rocketmq/nameserver/logs:/root/logs -v /docker/rocketmq/nameserver/store:/root/store --name rkmqServer foxiswho/rocketmq:server-4.7.0
#启动broker容器(创建挂载宿主机文件)
#broker.conf 文件
#terName = DefaultCluster
#brokerName = broker-1
#brokerId = 0
#odeleteWhen = 04
#fileReservedTime = 48
#brokerRole = ASYNC_MASTER
#flushDiskType = ASYNC_FLUSH
#brokerIP1 = 公网IP(同一个网段内网应该也可以,未测试)
# 需要首先在宿主机上创建一个broker.conf文件,并且修改brokerIp为宿主机IP
docker run -d -p 10911:10911 -p 10909:10909 -v /docker/rocketmq/broker/logs:/root/logs -v /docker/rocketmq/broker/store:/root/store -v /docker/rocketmq/broker/conf/broker.conf:/etc/rocketmq/broker.conf --name rmqbroker --link rkmqServer:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" foxiswho/rocketmq:broker-4.7.0
#启动console容器(创建挂载宿主机文件)
docker run -d --name rkmqConsole -p 8180:8080 --link rkmqServer:namesrv -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -t styletang/rocketmq-console-ng
#参考链接:https://blog.csdn.net/fenglibing/article/details/92378090
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
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
# YApi安装
参考链接:https://www.jianshu.com/p/a97d2efb23c5
# 创建存储卷
mkdir /docker/mongo-data
# 启动 MongoDB
docker run -d \
--name mongodb-yapi \
-v /docker/mongo-data:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=admin123 \
mongo
#获取yapi镜像
docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi
#自定义配置文件(/docker/yapi)
{
"port": "3000",
"adminAccount": "admin@anoyi.com",
"timeout":120000,
"db": {
"servername": "mongo",
"DATABASE": "yapi",
"port": 27017,
"user": "anoyi",
"pass": "anoyi.com",
"authSource": "admin"
}
}
#初始化 YAPI 数据库索引及管理员账号
docker run -it --rm \
--link mongodb-yapi:mongo \
--entrypoint npm \
--workdir /yapi/vendors \
-v /docker/yapi/config.json:/yapi/config.json \
registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
run install-server
#启动服务
docker run -d \
--name yapi \
--link mongodb-yapi:mongo \
--workdir /yapi/vendors \
-p 3000:3000 \
-v /docker/yapi/config.json:/yapi/config.json \
registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
server/app.js
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
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
上次更新: 2024/10/14, 16:12:01