從0開始構建一個瀚高資料庫Docker映象
採用的檔案系統參考:
更詳細內容參考:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
資料參考:
[root@192 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 6 months ago 13.3kB
docker pull NAME:TAG
[root@192 ~]# docker pull postgres Using default tag: latest latest: Pulling from library/postgres a2abf6c4d29d: Pull complete e1769f49f910: Pull complete33a59cfee47c: Pull complete461b2090c345: Pull complete8ed8ab6290ac: Pull complete495e42c822a0: Extracting [===> ] 32.77kB/441.7kB18e858c71c58: Download complete594792c80d5f: Download complete794976979956: Downloading [=====================> ] 38.32MB/91.23MB eb5e1a73c3ca: Download complete6d6360292cba: Download complete131e916e1a28: Download complete757a73507e2e: Download complete
[root@192 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE postgres latest 07e2ee723e2d 3 months ago 374MB hello-world latest feb5d9fea6a5 6 months ago 13.3kB
docker rmi IMAGE
docker rmi $(docker images -qa)
Docker 設定國內映象源可以參考:
docker run --name pg14 -e POSTGRES_PASSWORD=qwe123 -d postgres
docker ps -a
[root@192 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES de77f9716542 postgres "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 5432/tcp pg14 ec0accd39909 hello-world "/hello" 36 minutes ago Exited (0) 36 minutes ago friendly_merkle
[root@192 ~]# docker exec -it pg14 bash root@de77f9716542:/# psql postgres postgrespsql (14.1 (Debian 14.1-1.pgdg110+1))Type "help" for help.postgres=# select version(); version----------------------------------------------------------------------------------------------------------------------------- PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit(1 row)postgres=# \q
docker start CONTAINER docker stop CONTAINER docker restart CONTAINER
docker inspect NAME|ID
[root@192 ~]# docker inspect pg14[ { "Id": "84bfdc303cdcd71cf640a13103c0b78576b1c0ddd73316b04ed65b38f9010b70", "Created": "2022-04-13T14:24:43.815894123Z", "Path": "docker-entrypoint.sh", "Args": [ "postgres" ], "State": { "Status": "running", ...... "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "672e3d3aa95c4eadf2028a33280052f920c7326bb3c36d84faff34eaebaeffdf", "EndpointID": "5c749f10ab0470d588155c5e8d7f9ea07fe0bccb886f2f515ec894d773822ad4", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } } }]
[root@192 ~]# docker logs pg14 The files belonging to this database system will be owned by user "postgres".This user must also own the server process.The database cluster will be initialized with locale "en_US.utf8".The default database encoding has accordingly been set to "UTF8".The default text search configuration will be set to "english".Data page checksums are disabled.fixing permissions on existing directory /var/lib/postgresql/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100selecting default shared_buffers ... 128MB......
# 從主機向容器傳檔案 docker cp SRC_PATH CONTAINER:DEST_PATH # 從容器向主機傳檔案 docker cp CONTAINER:SRC_PATH DEST_PATH
docker rm CONTAINER
docker rm $(docker ps -qa)
資料參考:
# 建立一個名為 mydata 的卷 docker volume create mydata # 檢視已有的卷 docker volume ls # 檢視 mydata 卷的資訊 docker volume inspect mydata # 刪除一個卷 docker volume rm mydata # 刪除未被使用的卷 docker volume prune
# 直接在掛載時指定卷名:容器內路徑 docker run -d --name pg14 -e POSTGRES_PASSWORD=qwe123 -v mydata:/var/lib/postgresql/data postgres # 或提前建立好卷,然後掛載 docker volume create mydata1 docker run -d --name pg141 -e POSTGRES_PASSWORD=qwe123 -v mydata1:/var/lib/postgresql/data postgres
# 匿名掛載在使用時直接指定容器內路徑即可,Docker 會自動建立捲進行管理 docker run -d --name pg142 -e POSTGRES_PASSWORD=qwe123 -v /var/lib/postgresql/data postgres
# 在建立容器時直接指定掛載在主機上的路徑,不會自動建立卷 docker run -d --name pg143 -e POSTGRES_PASSWORD=qwe123 -v /root/my_pgdata:/var/lib/postgresql/data postgres
資料參考:
RUN <命令>RUN ["可執行檔案", "引數1", "引數2"]
COPY [--chown=<user>:<group>] <源路徑>... <目標路徑>COPY [--chown=<user>:<group>] ["<源路徑1>",... "<目標路徑>"]
CMD <命令>CMD ["可執行檔案", "引數1", "引數2"...]
# 編寫 Dockerfile 檔案 FROM centos CMD ["ls", "-a"]# 構建映象 docker build -t cmdtest:1.0 .# run執行,可以看到 ls -a 已經執行docker run cmdtest:1.0# 想追加一個命令引數,如果使用下面的寫法就會報錯 docker run cmdtest:1.0 -l # 原因是 -l 替換了 CMD 的命令,而 -l 不是命令 ,就報錯了
# 編寫 Dockerfile 檔案 FROM centos ENTRYPOINT ["ls", "-a"]# 構建映象 docker build -t entrypointtest:1.0 .# run 映象,同樣可以看到 ls -a 執行docker run entrypointtest:1.0# 這時候加上 -l,就不會報錯了 docker run entrypointtest:1.0 -l
ENV <key> <value>ENV <key1>=<value1> <key2>=<value2>...
ARG <引數名>[=<預設值>]
VOLUME ["<路徑1>", "<路徑2>"...]VOLUME <路徑>
EXPOSE <埠1> [<埠2>...]
WORKDIR <工作目錄路徑>
USER <使用者名稱>[:<使用者組>]
資料參考: ;https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
FROM centos:7 COPY . /root WORKDIR /root ENV PGDATA=/opt/HighGo4.5.7-see/data RUN rpm -ivh hgdb4.5.7-see-centos7-x86-64-20211119.rpm \ && echo "export LD_LIBRARY_PATH=/usr/lib64:${LD_LIBRARY_PATH}:/opt/HighGo4.5.7-see/lib" >> /opt/HighGo4.5.7-see/etc/highgodb.env \ && source /opt/HighGo4.5.7-see/etc/highgodb.env \ && initdb -D ${PGDATA} -A md5 --pwfile=./default_password \ && chmod 0600 /opt/HighGo4.5.7-see/etc/server.* \ && cp /opt/HighGo4.5.7-see/etc/server.* ${PGDATA} \ && echo "listen_addresses = '*'" >> /opt/HighGo4.5.7-see/data/postgresql.auto.conf \ && sed -i "s/127.0.0.1\/32/0.0.0.0\/0/g" /opt/HighGo4.5.7-see/data/pg_hba.conf \ && /opt/HighGo4.5.7-see/bin/pg_ctl start -D /opt/HighGo4.5.7-see/data \ && echo "source /opt/HighGo4.5.7-see/etc/highgodb.env" >> /root/.bashrc \ && rm hgdb4.5.7-see-centos7-x86-64-20211119.rpm \ && rm default_password \ && rm Dockerfile VOLUME ["${PGDATA}"] EXPOSE 5866 CMD ["/opt/HighGo4.5.7-see/bin/postgres"]
Hello@123 Hello@123 Hello@123 ###注: 以上密碼分別為sysdba、syssao、syssso使用者的預設密碼###
docker build -t hgdb457:1.0 .
docker run --name hgdb457_1 -p 5866:5866 -v hgdb_data:/opt/HighGo4.5.7-see/data --restart=always -d hgdb457:1.0
docker save hgdb457:1.0 -o hgdb457.tar
docker load -i hgdb457.tar
Docker 快速上手版塊命令及幫助可參考:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2903153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 瀚高資料庫記憶體結構資料庫記憶體
- 從0開始弄一個面向OC資料庫(四)–複雜資料模型儲存資料庫模型
- 從0開始弄一個面向OC資料庫(五)–多執行緒安全資料庫執行緒
- 從 0 開始瞭解 DockerDocker
- 從零開始構建一個webpack專案Web
- 從 0 開始構建知識圖譜的 5 個啟動建議
- 從新建資料夾開始構建UtopiaEngine(1)
- docker構建映象Docker
- 瀚高資料庫日誌挖掘方法資料庫
- 保證資料庫質量安全:從0開始的資料庫測試資料庫
- 從 0 開始學架構架構
- Docker從零構建php-nginx-alpine映象DockerPHPNginx
- Docker映象構建(五)Docker
- docker構建supervisor映象Docker
- Docker 構建 kubectl 映象Docker
- 構建 Docker 映象的 N 個小技巧Docker
- 瀚高資料庫data目錄詳解資料庫
- 使用瀚高資料庫hibernate方言報錯資料庫
- 瀚高資料庫自定義操作符'!~~'資料庫
- Docker映象構建原理解析(不裝docker也能構建映象)Docker
- 從零開始製作一個linux iso映象Linux
- devops-5:從0開始構建一條完成的CI CD流水線dev
- JavaWeb——從零開始構建一個客戶管理系統(一)JavaWeb
- 怎樣去構建一個優質的Docker容器映象Docker
- 從零開始構建自己的第一個vue專案Vue
- 瀚高資料庫相容Mysql的unhex函式資料庫MySql函式
- docker 構建自己的映象Docker
- Docker 映象構建之 DockerfileDocker
- docker:映象構建、倉庫、壓縮、匯入 二Docker
- Docker映象的構建以及資料卷和埠對映Docker
- 如何從0開始搭建 Vue 元件庫Vue元件
- 從零開始構建一個vue專案 --- webpack歷險記VueWeb
- 從零開始構建react應用(一)前言React
- 從新建資料夾開始構建ShadowPlay Engine遊戲引擎(6)遊戲引擎
- 從0開始的高併發(一)--- Zookeeper的基礎概念
- 從0開始學習Webpack(一)Web
- Docker 分階段構建映象Docker
- Docker 構建多平臺映象Docker