1、安装

1.1、创建卷

  • 配置卷
podman volume create --label type=mongo-7.0 --label env=dev mongo-7.0-conf
  • 数据卷
podman volume create --label type=mongo-7.0 --label env=dev mongo-7.0-data
  • 查看卷
lwk@qwfys:~$ podman volume inspect mongo-4.4-conf 
[
    {
        "Name": "mongo-4.4-conf",
        "Driver": "local",
        "Mountpoint": "/home/lwk/.local/share/containers/storage/volumes/mongo-4.4-conf/_data",
        "CreatedAt": "2023-10-20T01:03:51.772469157+08:00",
        "Labels": {
            "env": "dev",
            "type": "mongo-4.4"
        },
        "Scope": "local",
        "Options": {}
    }
]
lwk@qwfys:~$

1.2、配置文件

touch ~/.local/share/containers/storage/volumes/mongo-7.0-conf/_data/mongod.conf
lwk@qwfys:~$ ll ~/.local/share/containers/storage/volumes/mongo-7.0-conf/_data/mongod.conf
-rw-rw-r-- 1 lwk lwk 0 Oct 20 01:06 /home/lwk/.local/share/containers/storage/volumes/mongo-7.0-conf/_data/mongod.conf
lwk@qwfys:~$

1.3、创建容器

这里,我们基于卷创建容器

podman create  \
--restart always \
--publish 27017:27017 \
--name mongo-7.0.2 \
--volume mongo-7.0-conf:/etc/mongo \
--volume mongo-7.0-data:/data/db \
--volume /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
--env MONGO_INITDB_ROOT_USERNAME=admin \
--env MONGO_INITDB_ROOT_PASSWORD=Gah6kuP7ohfio4 \
mongo:7.0.2-jammy \
--config /etc/mongo/mongod.conf

1.4、服务管理

  • 生成服务

我们借助命令podman generate systemd生成一个用户级服务

podman generate systemd --new mongo-7.0.2 > ~/.config/systemd/user/mongo-7.0.2.service
  • 刷新服务
systemctl --user daemon-reload
  • 查看服务
lwk@qwfys:~$ systemctl --user status mongo-7.0.2.service 
○ mongo-4.4.25.service - Podman container-609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62.service
     Loaded: loaded (/home/lwk/.config/systemd/user/mongo-4.4.25.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:podman-generate-systemd(1)
lwk@qwfys:~$
  • 开机运行
lwk@qwfys:~$ systemctl --user enable mongo-4.4.25.service 
Created symlink /home/lwk/.config/systemd/user/default.target.wants/mongo-4.4.25.service → /home/lwk/.config/systemd/user/mongo-4.4.25.service.
lwk@qwfys:~$
  • 启动服务
lwk@qwfys:~$ systemctl --user start mongo-4.4.25.service 
lwk@qwfys:~$ systemctl --user status mongo-4.4.25.service 
● mongo-4.4.25.service - Podman container-609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62.service
     Loaded: loaded (/home/lwk/.config/systemd/user/mongo-4.4.25.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-10-20 01:13:09 CST; 8s ago
       Docs: man:podman-generate-systemd(1)
    Process: 6170 ExecStartPre=/bin/rm -f /run/user/1000/mongo-4.4.25.service.ctr-id (code=exited, status=0/SUCCESS)
   Main PID: 6237 (conmon)
      Tasks: 25 (limit: 18850)
     Memory: 20.1M
        CPU: 319ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/mongo-4.4.25.service
             ├─6212 /usr/bin/slirp4netns --disable-host-loopback --mtu=65520 --enable-sandbox --enable-seccomp -c -e 3 -r 4 --netns-type=path /run/user/1000/netns/cni-401d59f2-40bb-f9bf-f85>
             ├─6214 containers-rootlessport
             ├─6225 containers-rootlessport-child
             └─6237 /usr/bin/conmon --api-version 1 -c bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2 -u bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2 ->

Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.551+08:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message">
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.573+08:00"},"s":"I",  "c":"STORAGE",  "id":4795906, "ctx":"initandlisten","msg":"WiredTiger opened","attr":{"durationM>
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.573+08:00"},"s":"I",  "c":"RECOVERY", "id":23987,   "ctx":"initandlisten","msg":"WiredTiger recoveryTimestamp","attr":>
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.586+08:00"},"s":"I",  "c":"STORAGE",  "id":22262,   "ctx":"initandlisten","msg":"Timestamp monitor starting"}
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.614+08:00"},"s":"I",  "c":"STORAGE",  "id":20536,   "ctx":"initandlisten","msg":"Flow Control is enabled on this deplo>
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.618+08:00"},"s":"I",  "c":"FTDC",     "id":20625,   "ctx":"initandlisten","msg":"Initializing full-time diagnostic dat>
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.619+08:00"},"s":"I",  "c":"REPL",     "id":6015317, "ctx":"initandlisten","msg":"Setting new configuration state","att>
Oct 20 01:13:12 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:12.621+08:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"/tmp/mong>
lwk@qwfys:~$
  • 查看日志
lwk@qwfys:~$ journalctl --user --unit mongo-4.4.25
Oct 20 01:13:08 qwfys systemd[1865]: Starting Podman container-609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62.service...
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:09.022804009 +0800 CST m=+0.094267064 container remove 609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62 (image=docker.io>
Oct 20 01:13:09 qwfys podman[6171]: 609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:08.961494548 +0800 CST m=+0.032957581 image pull  mongo:4.4.25-focal
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:09.085400286 +0800 CST m=+0.156863341 volume create 2f705d6769b4c0a4e685e87a028c8a83b3d5126bacd4cf9c3cd4074f3bb4e505
Oct 20 01:13:09 qwfys podman[6171]: 
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:09.098456917 +0800 CST m=+0.169919975 container create bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2 (image=docker.io>
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:09.237984454 +0800 CST m=+0.309447477 container init bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2 (image=docker.io/l>
Oct 20 01:13:09 qwfys systemd[1865]: Started Podman container-609056b175d2467e7749f014726b0831a53cb0e8bcc258085ce72b0d6b4f3a62.service.
Oct 20 01:13:09 qwfys podman[6171]: 2023-10-20 01:13:09.246006469 +0800 CST m=+0.317469493 container start bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2 (image=docker.io/>
Oct 20 01:13:09 qwfys podman[6171]: bd577b9f89912a2d843799e8ae042d3694365049d33ad907c80aeef79effa6e2
Oct 20 01:13:09 qwfys conmon[6237]: about to fork child process, waiting until server is ready for connections.
Oct 20 01:13:09 qwfys conmon[6237]: forked process: 23
Oct 20 01:13:09 qwfys conmon[6237]: 
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.526+08:00"},"s":"I",  "c":"CONTROL",  "id":20698,   "ctx":"main","msg":"***** SERVER RESTARTED *****"}
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.534+08:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enab>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.541+08:00"},"s":"I",  "c":"NETWORK",  "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP Fast>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"STORAGE",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":23,"p>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":23403,   "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"ver>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":51765,   "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{>
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.544+08:00"},"s":"I",  "c":"STORAGE",  "id":22297,   "ctx":"initandlisten","msg":"Using the XFS filesystem is strongly >
Oct 20 01:13:09 qwfys conmon[6237]: {"t":{"$date":"2023-10-20T01:13:09.544+08:00"},"s":"I",  "c":"STORAGE",  "id":22315,   "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":>
lwk@qwfys:~$ 

1.5、容器管理

  • 日志查看
lwk@qwfys:~$ podman logs -f mongo-4.4.25 
about to fork child process, waiting until server is ready for connections.
forked process: 23

{"t":{"$date":"2023-10-20T01:13:09.526+08:00"},"s":"I",  "c":"CONTROL",  "id":20698,   "ctx":"main","msg":"***** SERVER RESTARTED *****"}
{"t":{"$date":"2023-10-20T01:13:09.534+08:00"},"s":"I",  "c":"CONTROL",  "id":23285,   "ctx":"main","msg":"Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'"}
{"t":{"$date":"2023-10-20T01:13:09.541+08:00"},"s":"I",  "c":"NETWORK",  "id":4648601, "ctx":"main","msg":"Implicit TCP FastOpen unavailable. If TCP FastOpen is required, set tcpFastOpenServer, tcpFastOpenClient, and tcpFastOpenQueueSize."}
{"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"STORAGE",  "id":4615611, "ctx":"initandlisten","msg":"MongoDB starting","attr":{"pid":23,"port":27017,"dbPath":"/data/db","architecture":"64-bit","host":"bd577b9f8991"}}
{"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":23403,   "ctx":"initandlisten","msg":"Build Info","attr":{"buildInfo":{"version":"4.4.25","gitVersion":"3e18c4c56048ddf22a6872edc111b542521ad1d5","openSSLVersion":"OpenSSL 1.1.1f  31 Mar 2020","modules":[],"allocator":"tcmalloc","environment":{"distmod":"ubuntu2004","distarch":"x86_64","target_arch":"x86_64"}}}}
{"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":51765,   "ctx":"initandlisten","msg":"Operating System","attr":{"os":{"name":"Ubuntu","version":"20.04"}}}
{"t":{"$date":"2023-10-20T01:13:09.542+08:00"},"s":"I",  "c":"CONTROL",  "id":21951,   "ctx":"initandlisten","msg":"Options set by command line","attr":{"options":{"config":"/etc/mongo/mongod.conf","net":{"bindIp":"127.0.0.1","port":27017,"tls":{"mode":"disabled"}},"processManagement":{"fork":true,"pidFilePath":"/tmp/docker-entrypoint-temp-mongod.pid"},"systemLog":{"destination":"file","logAppend":true,"path":"/proc/1/fd/1"}}}}
{"t":{"$date":"2023-10-20T01:13:09.544+08:00"},"s":"I",  "c":"STORAGE",  "id":22297,   "ctx":"initandlisten","msg":"Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem","tags":["startupWarnings"]}
{"t":{"$date":"2023-10-20T01:13:09.544+08:00"},"s":"I",  "c":"STORAGE",  "id":22315,   "ctx":"initandlisten","msg":"Opening WiredTiger","attr":{"config":"create,cache_size=7406M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress,compact_progress],"}}
{"t":{"$date":"2023-10-20T01:13:10.055+08:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1697735590:55567][23:0x7f66e3aa0cc0], txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global recovery timestamp: (0, 0)"}}
{"t":{"$date":"2023-10-20T01:13:10.055+08:00"},"s":"I",  "c":"STORAGE",  "id":22430,   "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1697735590:55677][23:0x7f66e3aa0cc0], txn-recover: [WT_VERB_RECOVERY | WT_VERB_RECOVERY_PROGRESS] Set global oldest timestamp: (0, 0)"}}
{"t":{"$date":"2023-10-20T01:13:10.081+08:00"},"s":"I",  "c":"STORAGE",  "id":4795906, "ctx":"initandlisten","msg":"WiredTiger opened","attr":{"durationMillis":537}}
{"t":{"$date":"2023-10-20T01:13:10.081+08:00"},"s":"I",  "c":"RECOVERY", "id":23987,   "ctx":"initandlisten","msg":"WiredTiger recoveryTimestamp","attr":{"recoveryTimestamp":{"$timestamp":{"t":0,"i":0}}}}
{"t":{"$date":"2023-10-20T01:13:10.123+08:00"},"s":"I",  "c":"STORAGE",  "id":22262,   "ctx":"initandlisten","msg":"Timestamp monitor starting"}
{"t":{"$date":"2023-10-20T01:13:10.136+08:00"},"s":"W",  "c":"CONTROL",  "id":22120,   "ctx":"initandlisten","msg":"Access control is not enabled for the database. Read and write access to data and configuration is unrestricted","tags":["startupWarnings"]}
{"t":{"$date":"2023-10-20T01:13:10.144+08:00"},"s":"I",  "c":"STORAGE",  "id":20320,   "ctx":"initandlisten","msg":"createCollection","attr":{"namespace":"admin.system.version","uuidDisposition":"provided","uuid":{"uuid":{"$uuid":"3474538b-cd88-452a-9a7b-d2666ceb9b9c"}},"options":{"uuid":{"$uuid":"3474538b-cd88-452a-9a7b-d2666ceb9b9c"}}}}
{"t":{"$date":"2023-10-20T01:13:10.179+08:00"},"s":"I",  "c":"INDEX",    "id":20345,   "ctx":"initandlisten","msg":"Index build: done building","attr":{"buildUUID":null,"namespace":"admin.system.version","index":"_id_","commitTimestamp":{"$timestamp":{"t":0,"i":0}}}}
{"t":{"$date":"2023-10-20T01:13:10.179+08:00"},"s":"I",  "c":"COMMAND",  "id":20459,   "ctx":"initandlisten","msg":"Setting featureCompatibilityVersion","attr":{"newVersion":"4.4"}}
{"t":{"$date":"2023-10-20T01:13:10.182+08:00"},"s":"I",  "c":"STORAGE",  "id":20536,   "ctx":"initandlisten","msg":"Flow Control is enabled on this deployment"}
{"t":{"$date":"2023-10-20T01:13:10.185+08:00"},"s":"I",  "c":"STORAGE",  "id":20320,   "ctx":"initandlisten","msg":"createCollection","attr":{"namespace":"local.startup_log","uuidDisposition":"generated","uuid":{"uuid":{"$uuid":"fbb84523-f56b-48ad-9d5b-f6cc5d009214"}},"options":{"capped":true,"size":10485760}}}
{"t":{"$date":"2023-10-20T01:13:10.217+08:00"},"s":"I",  "c":"INDEX",    "id":20345,   "ctx":"initandlisten","msg":"Index build: done building","attr":{"buildUUID":null,"namespace":"local.startup_log","index":"_id_","commitTimestamp":{"$timestamp":{"t":0,"i":0}}}}
{"t":{"$date":"2023-10-20T01:13:10.218+08:00"},"s":"I",  "c":"FTDC",     "id":20625,   "ctx":"initandlisten","msg":"Initializing full-time diagnostic data capture","attr":{"dataDirectory":"/data/db/diagnostic.data"}}
{"t":{"$date":"2023-10-20T01:13:10.218+08:00"},"s":"I",  "c":"REPL",     "id":6015317, "ctx":"initandlisten","msg":"Setting new configuration state","attr":{"newState":"ConfigReplicationDisabled","oldState":"ConfigPreStart"}}
{"t":{"$date":"2023-10-20T01:13:10.221+08:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"/tmp/mongodb-27017.sock"}}
{"t":{"$date":"2023-10-20T01:13:10.221+08:00"},"s":"I",  "c":"NETWORK",  "id":23015,   "ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}}
{"t":{"$date":"2023-10-20T01:13:10.221+08:00"},"s":"I",  "c":"NETWORK",  "id":23016,   "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
^Clwk@qwfys:~$ 

2、客户端管理

这里,我们采用podman临时启动一个客户端来连接上面已经通过podman启动的服务器。

podman run -it --rm mongo:4.4.25-focal \
	mongo --host 192.168.101.129 \
    --port 27017 \
		--username admin \
		--password Gah6kuP7ohfio4 \
		--authenticationDatabase admin \
		harbin

上面这个代码片断,我们采用账号admin连接到数据库harbin。

接下来是真实的样例,以供大家参考。

lwk@qwfys:~$ podman run -it --rm mongo:4.4.25-focal \
        mongo --host 192.168.101.129 \
    --port 27017 \
                --username admin \
                --password Gah6kuP7ohfio4 \
                --authenticationDatabase admin \
                harbin
MongoDB shell version v4.4.25
connecting to: mongodb://192.168.101.129:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b08d4df1-1e8c-43f6-8a6a-4f8d0785b606") }
MongoDB server version: 4.4.25
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
---
The server generated these startup warnings when booting: 
        2023-10-23T11:43:08.188+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
---
> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
> exit
bye
lwk@qwfys:~$ 

或者采用下这种方式也是可以的。

podman run -it --rm mongo:4.4.25-focal \
  mongo \
    --username=admin \
    --password=Gah6kuP7ohfio4 \
    mongodb://192.168.101.129:27017/harbin?authSource=admin

对应的真实样例如下:

lwk@qwfys:~$ podman run -it --rm mongo:4.4.25-focal mongo --username=admin --password=Gah6kuP7ohfio4 mongodb://192.168.101.129:27017/harbin?authSource=admin
MongoDB shell version v4.4.25
connecting to: mongodb://192.168.101.129:27017/harbin?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("b9a28fde-2240-4209-9d4a-539da25b3b44") }
MongoDB server version: 4.4.25
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
---
The server generated these startup warnings when booting: 
        2023-10-23T11:43:08.188+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
---
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> exit
bye
lwk@qwfys:~$

至些,我们已经基于podman完成了mongodb 4.4.25的安装。

10-25 05:33