笺注:Docker的安装可参考 CentOS8_使用Docker安装Python3
查看Docker的版本信息:
[root@centos8 ~]# docker -v
Docker version 20.10.21, build baeda1f
[root@centos8 ~]#
从公网下载镜像:( 以下是下载MariaDB10.1的镜像 )
[root@centos8 ~]# docker pull mariadb:10.1
查看宿主机的所有镜像:
[root@centos8 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb 10.1 895244a22f37 21 months ago 352MB
[root@centos8 ~]#
使用镜像“mariadb:10.1”创建并启动容器“MariaDB_1”:
[root@centos8 ~]# docker run -itd --name MariaDB_1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=888 -v /opt/database_1:/home/database_1 mariadb:10.1
684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a
[root@centos8 ~]#
注释:
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 第一个3306是宿主机的端口,暴露给外部直接访问;第二个3306是容器的端口。
-e 环境配置 : 指定数据库管理员root@localhost的密码为888
-v 挂载目录 : 这里是把宿主机的目录/opt/database_1挂载到容器的目录/home/database_1;假如目录不存在,就会自动创建。
mariadb:10.1 : 镜像名称:版本号
在宿主机查看所有的容器:(无论是否正在运行)
[root@centos8 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
684a4e0497a7 mariadb:10.1 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp MariaDB_1
[root@centos8 ~]#
注释:宿主机的TCP 3306端口,映射到容器“MariaDB_1”的TCP 3306端口。
###
容器“MariaDB_1”在宿主机的存放目录:
[root@centos8 ~]# cd /var/lib/docker/containers/
[root@centos8 containers]# ls
684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a
[root@centos8 containers]#
[root@centos8 containers]# cd 684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a/
[root@centos8 684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a]# ls
684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a-json.log hostconfig.json mounts
checkpoints hostname resolv.conf
config.v2.json hosts resolv.conf.hash
[root@centos8 684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a]#
容器“MariaDB_1”的文件hostconfig.json中的一些信息:
容器“MariaDB_1”不随宿主机的启动而启动:
"RestartPolicy":{"Name":"no","MaximumRetryCount":0},
端口映射 :
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3306"}]},
不限制容器“MariaDB_1”可用的CPU个数 :
"NanoCpus":0,
不限制容器“MariaDB_1”可用的内存量 :
"Memory":0,
不限制容器“MariaDB_1”可用的交换分区量 :
"MemorySwap":0,
#####
使用镜像“mariadb:10.1”创建并启动容器“MariaDB_2”:
[root@centos8 ~]# docker run -itd --name MariaDB_2 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=P@ssw0rd -v /opt/database_2:/home/database_2 --cpus=2 -m 200m mariadb:10.1
dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704
[root@centos8 ~]#
注释:
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 3307是宿主机的端口,暴露给外部直接访问;3306是容器的端口。
-e 环境配置 : 指定数据库管理员root@localhost的密码为P@ssw0rd
-v 挂载目录 : 这里是把宿主机的目录/opt/database_2挂载到容器的目录/home/database_2;假如目录不存在,就会自动创建。
--cpus=2 : 限制容器可用的CPU个数为2个
-m 200m : 限制容器可用的内存量为200M
mariadb:10.1 : 镜像名称:版本号
在宿主机查看所有的容器:
[root@centos8 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd2536d8ec29 mariadb:10.1 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp MariaDB_2
684a4e0497a7 mariadb:10.1 "docker-entrypoint.s…" 2 hours ago Up 8 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp MariaDB_1
[root@centos8 ~]#
注释:宿主机的TCP 3307端口,映射到容器“MariaDB_2”的TCP 3306端口。
###
容器“MariaDB_2”在宿主机的存放目录:
[root@centos8 ~]# cd /var/lib/docker/containers/
[root@centos8 containers]# ls
684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a
dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704
[root@centos8 containers]#
[root@centos8 containers]# cd dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704/
[root@centos8 dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704]# ls
checkpoints hostconfig.json mounts
config.v2.json hostname resolv.conf
dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704-json.log hosts resolv.conf.hash
[root@centos8 dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704]#
容器“MariaDB_2”的文件hostconfig.json中的一些信息:
容器“MariaDB_2”不随宿主机的启动而启动:
"RestartPolicy":{"Name":"no","MaximumRetryCount":0},
端口映射 :
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]},
限制容器“MariaDB_2”可用的CPU个数为2个 :
"NanoCpus":2000000000,
限制容器“MariaDB_2”可用的内存量为200M :
"Memory":209715200,
限制容器“MariaDB_2”可用的交换分区量为400M : (默认为可用内存量的两倍)
"MemorySwap":419430400,
#####
使用镜像“mariadb:10.1”创建并启动容器“MariaDB_3”:
[root@centos8 ~]# docker run -itd --name MariaDB_3 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=P@ssw12 --cpus=3 -m 500m mariadb:10.1
e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34
[root@centos8 ~]#
注释:
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 3308是宿主机的端口,暴露给外部直接访问;3306是容器的端口。
-e 环境配置 : 指定数据库管理员root@localhost的密码为P@ssw12
--cpus=3 : 限制容器可用的CPU个数为3个
-m 500m : 限制容器可用的内存量为500M
mariadb:10.1 : 镜像名称:版本号
在宿主机查看所有的容器:
[root@centos8 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e36c2c54cc72 mariadb:10.1 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp MariaDB_3
dd2536d8ec29 mariadb:10.1 "docker-entrypoint.s…" 20 minutes ago Up 20 minutes 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp MariaDB_2
684a4e0497a7 mariadb:10.1 "docker-entrypoint.s…" 2 hours ago Up 25 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp MariaDB_1
[root@centos8 ~]#
注释:宿主机的TCP 3308端口,映射到容器“MariaDB_3”的TCP 3306端口。
###
容器“MariaDB_3”在宿主机的存放目录:
[root@centos8 ~]# cd /var/lib/docker/containers/
[root@centos8 containers]# ls
684a4e0497a78099364cb626550414653cb71ddefe828905ff115fdcab0ef00a
dd2536d8ec294a8fde0c8e38a9c5f8d4332c98c51888e2c7558c9e650184d704
e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34
[root@centos8 containers]#
[root@centos8 containers]# cd e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34/
[root@centos8 e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34]# ls
checkpoints hostconfig.json mounts
config.v2.json hostname resolv.conf
e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34-json.log hosts resolv.conf.hash
[root@centos8 e36c2c54cc72a50724c13318ee72f4552618e7e9ca49064b297dfa59e3e05c34]#
容器“MariaDB_3”的文件hostconfig.json中的一些信息:
容器“MariaDB_3”不随宿主机的启动而启动:
"RestartPolicy":{"Name":"no","MaximumRetryCount":0},
端口映射 :
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3308"}]},
限制容器“MariaDB_3”可用的CPU个数为3个 :
"NanoCpus":3000000000,
限制容器“MariaDB_3”可用的内存量为500M :
"Memory":524288000,
限制容器“MariaDB_3”可用的交换分区量为1000M : (默认为可用内存量的两倍)
"MemorySwap":1048576000,
###
进入容器“MariaDB_3”:
[root@centos8 ~]# docker exec -it MariaDB_3 /bin/bash
root@e36c2c54cc72:/#
在容器里看到的是宿主机的内存总量、交换分区总量:
root@e36c2c54cc72:/# free -m
total used free shared buff/cache available
Mem: 1800 854 267 8 679 779
Swap: 4095 0 4095
root@e36c2c54cc72:/#
######
在宿主机查看各个容器的CPU使用率、内存使用率情况等:
[root@centos8 ~]# docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e36c2c54cc72 MariaDB_3 0.03% 140.9MiB / 500MiB 28.18% 1.01kB / 0B 45.8MB / 250MB 26
dd2536d8ec29 MariaDB_2 0.04% 133.4MiB / 200MiB 66.70% 1.08kB / 0B 52.5MB / 250MB 26
684a4e0497a7 MariaDB_1 0.03% 140.5MiB / 1.758GiB 7.80% 1.08kB / 0B 17.5MB / 176kB 26
###
在宿主机查看各个容器的可用CPU个数:
[root@centos8 ~]# docker inspect MariaDB_1 | grep -i NanoCpus
"NanoCpus": 0,
[root@centos8 ~]#
[root@centos8 ~]# docker inspect MariaDB_2 | grep -i NanoCpus
"NanoCpus": 2000000000,
[root@centos8 ~]#
[root@centos8 ~]# docker inspect MariaDB_3 | grep -i NanoCpus
"NanoCpus": 3000000000,
[root@centos8 ~]#
###
在宿主机查看各个容器的可用内存量、可用交换分区量:
[root@centos8 ~]# docker inspect MariaDB_1 | grep -i Memory
"Memory": 0,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
[root@centos8 ~]#
[root@centos8 ~]# docker inspect MariaDB_2 | grep -i Memory
"Memory": 209715200,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 419430400,
"MemorySwappiness": null,
[root@centos8 ~]#
[root@centos8 ~]# docker inspect MariaDB_3 | grep -i Memory
"Memory": 524288000,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 1048576000,
"MemorySwappiness": null,
[root@centos8 ~]#
######
让容器“MariaDB_3”随宿主机的启动而启动:(会自动启动MariaDB数据库)
[root@centos8 ~]# docker update --restart=always MariaDB_3
MariaDB_3
[root@centos8 ~]#
容器“MariaDB_3”的文件hostconfig.json会自动发生变化:
"RestartPolicy":{"Name":"always","MaximumRetryCount":0},
在宿主机查看容器“MariaDB_3”是否会随宿主机的启动而启动:
[root@centos8 ~]# docker inspect MariaDB_3 | grep -i -A2 RestartPolicy
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
[root@centos8 ~]#
笺注,要设置开机自动启动docker服务:
[root@centos8 ~]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@centos8 ~]#
[root@centos8 ~]# systemctl is-enabled docker
enabled
[root@centos8 ~]#
###
不让容器“MariaDB_3”随宿主机的启动而启动:
[root@centos8 ~]# docker update --restart=no MariaDB_3
MariaDB_3
[root@centos8 ~]#
容器“MariaDB_3”的文件hostconfig.json会自动发生变化:
"RestartPolicy":{"Name":"no","MaximumRetryCount":0},
在宿主机查看容器“MariaDB_3”是否会随宿主机的启动而启动:
[root@centos8 ~]# docker inspect MariaDB_3 | grep -i -A3 RestartPolicy
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
[root@centos8 ~]#
######
修改限制容器“MariaDB_3”可用的CPU个数为4个:
[root@centos8 ~]# docker update --cpus=4 MariaDB_3
MariaDB_3
[root@centos8 ~]#
容器“MariaDB_3”的文件hostconfig.json会自动发生变化:
"NanoCpus":4000000000,
###
修改限制容器“MariaDB_3”可用的内存量为600M:
[root@centos8 ~]# docker update -m 600m MariaDB_3
MariaDB_3
[root@centos8 ~]#
容器“MariaDB_3”的文件hostconfig.json会自动发生变化:
"Memory":629145600,
此时,容器“MariaDB_3”可用的交换分区量没有发生变化 :
"MemorySwap":1048576000,
###
修改限制容器“MariaDB_3”可用的交换分区量为800M:
[root@centos8 ~]# docker update --memory-swap 800m MariaDB_3
MariaDB_3
[root@centos8 ~]#
容器“MariaDB_3”的文件hostconfig.json会自动发生变化:
"MemorySwap":838860800,
###
查看容器“MariaDB_3”的全部配置信息:(显示有省略)
[root@centos8 ~]# docker inspect MariaDB_3
"Memory": 629145600,
"NanoCpus": 4000000000,
"MemorySwap": 838860800,
######
以下是重新把宿主机的TCP 3309端口,映射到容器“MariaDB_3”的TCP 3306端口:
先停止docker服务:
[root@centos8 ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
[root@centos8 ~]#
[root@centos8 ~]# systemctl stop docker.socket
[root@centos8 ~]#
修改容器“MariaDB_3”的文件hostconfig.json :
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3308"}]},
更改为:
"PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3309"}]},
启动docker服务:
[root@centos8 ~]# systemctl start docker
[root@centos8 ~]#
启动容器“MariaDB_3”:
[root@centos8 ~]# docker start MariaDB_3
MariaDB_3
[root@centos8 ~]#
在宿主机查看正在运行的容器:
[root@centos8 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e36c2c54cc72 mariadb:10.1 "docker-entrypoint.s…" 21 minutes ago Up 2 minutes 0.0.0.0:3309->3306/tcp, :::3309->3306/tcp MariaDB_3
[root@centos8 ~]#
注释:宿主机的TCP 3309端口,映射到容器“MariaDB_3”的TCP 3306端口。
相关文章:
CentOS8_在Docker中安装MariaDB
CentOS8_在Docker中安装MySQL
CentOS8_在Docker中安装Oracle11gR2
CentOS8_在Docker中安装LNMP(使用参数--link)
CentOS8_在Docker的容器内自动启动服务 |