采用的文件系统参考: https://docs.docker.com/storage/storagedriver/
更详细内容参考: https://docs.docker.com/get-started/overview/#docker-architecture
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 \ https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
资料参考: https://docs.docker.com/engine/install/
[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 设置国内镜像源可以参考: http://mirrors.ustc.edu.cn/help/dockerhub.html
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)
资料参考: https://docs.docker.com/storage/volumes/
# 创建一个名为 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
资料参考: https://docs.docker.com/storage/
RUN <命令>RUN ["可执行文件", "参数1", "参数2"]
COPY [--chown=: ] <源路径>... <目标路径>COPY [--chown= : ] ["<源路径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
ENVENV = = ...
ARG <参数名>[=<默认值>]
VOLUME ["<路径1>", "<路径2>"...]VOLUME <路径>
EXPOSE <端口1> [<端口2>...]
WORKDIR <工作目录路径>
USER <用户名>[:<用户组>]
资料参考: https://docs.docker.com/engine/reference/builder/;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 快速上手版块命令及帮助可参考: https://docs.docker.com/reference/
