Docker常用操作记录

本文详细介绍了Docker中的各种常用命令,包括查看系统信息、版本信息、管理容器(启动、停止、重启等)、操作镜像、持久化数据的方法,以及MySQL、Postgres和GeoServer的安装与部署示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker 常用命令

docker 服务操作

systemctl daemon-reload # 重新加载服务docker的配置文件
systemctl start docker # 启动docker服务
systemctl restart docker # 重启docker服务
systemctl stop docker # 停止docker服务
// 查看docker系统信息
docker info	

// 显示 Docker 版本信息
docker version	

docker ps	// 查看正在运行的容器
docker ps -a	// 查看所有已经创建的容器
docker images	// 列出镜像列表
docker container ls	 // 效果同ps命令(加-a效果同)

// 详细信息
docker ps --no-trunc // 不截断输出
# 
docker images --no-trunc // 不截断输出

// 删除容器
docker rm <容器id>

# 删除镜像
docker rmi	<镜像id>

# 查看容器
docker image prune -a

# 启动容器
docker start <容器id>

# 停止容器
docker stop	<容器id>

# 重启容器
docker restart <容器id>

# 创建一个新的容器并运行一个命令
docker run 详细参数
	--name=""              \    #指定容器名字进行容器管理,links特性需要使用名字
	-e, --env=[]           \    #指定环境变量,容器中可以使用该环境变量
	-p, --publish=[]       \    #指定容器暴露的端口
	-v, --volume=[]        \    #给容器挂载存储卷,挂载到容器的某个目录 eg:主机:容器
	--privileged=false     \    #指定容器是否为特权容器,特权容器拥有所有的capabilities
	--restart="no"         \    #指定容器停止后的重启策略:
		                            no:容器退出时不重启
		                            on-failure:容器故障退出(返回值非零)时重启
		                            always:容器退出时总是重启
# 使用示例
docker run  --name geoserver                            \ # geoserve 容器名
			-e GEOSERVER_ADMIN_USER=admin               \ # 账户 admin
			-e GEOSERVER_ADMIN_PASSWORD=geoserver       \ # 密码 geoserver
			-v /home/geoserver/data_dir:/data_dir       \ # 运行目录
			-p 8080:8080                                \ # 运行端口
			-d kartoza/geoserver                        \ # 镜像名称
			--restart="always"                          \ # 重启状态:一直重启

# docker更新参数
# 更新重启状态
docker update docker-name --restart=always #如:docker update geoserver --restart=always 

# 导出镜像
docker save -o <tar文件路径> <镜像名称> # 如:docker save -o /home/myimage_latest.tar myimage:latest

# 导入镜像 
docker load -i <tar文件路径> # 如:docker load -i /home/myimage_latest.tar 

# 下载远程镜像
docker pull <镜像名称> # 如: docker pull kartoza/geoserver 

mysql安装部署

// 下载容器
docker pull mysql:latest

1、持久化方法一
// 创建持久化路径
mkdir -p /home/mysql/data

// 运行容器
​docker run --privileged=true  --name mysql -d -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql@2024 mysql

或
docker run --privileged=true  --name mysql -d -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql@2024 mysql -v /home/mysql/conf/my.cnf:/etc/my.cnf

或
docker run --privileged=true --name mysql -d -p 13306:3306 -v /home/tsgis/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Gsafety@2024 mysql:5.7.27 --lower-case-table-names=1

--lower-case-table-names=1 // 设置大小写不区分
2、持久化方法二
// 创建数据卷
docker volume create mysql-data

// 运行容器
docker run --privileged=true  --name mysql -d -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql@2024 mysql

postgres安装部署

geoserver安装部署

// 下载容器
docker pull kartoza/geoserver

// 创建持久化路径
mkdir -p /home/geoserver/data_dir

docker run --name geoserver -e GEOSERVER_ADMIN_USER=admin -e GEOSERVER_ADMIN_PASSWORD=geoserver -v /home/geoserver/data_dir:/data_dir  -p 8080:8080 -d kartoza/geoserver

// 更新重启状态
docker update geoserver --restart=alway

docker开放tcp端口服务

 # 查找docker服务
find / -name docker.service

例如路径:/etc/systemd/system/docker.service

# 修改docker.service配置文件,在"ExecStart=/usr/bin/dockerd" 后面新增"-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 

#重新加载服务docker的配置文件
systemctl daemon-reload 

#重启docker服务
systemctl restart docker 

# 浏览器访问http://ip:2375/version,如下:
{
  "Platform": {
    "Name": ""
  },
  "Components": [
    {
      "Name": "Engine",
      "Version": "18.06.1-ce",
      "Details": {
        "ApiVersion": "1.38",
        "Arch": "amd64",
        "BuildTime": "2018-08-21T17:28:38.000000000+00:00",
        "Experimental": "false",
        "GitCommit": "e68fc7a",
        "GoVersion": "go1.10.3",
        "KernelVersion": "3.10.0-327.el7.x86_64",
        "MinAPIVersion": "1.12",
        "Os": "linux"
      }
    }
  ],
  "Version": "18.06.1-ce",
  "ApiVersion": "1.38",
  "MinAPIVersion": "1.12",
  "GitCommit": "e68fc7a",
  "GoVersion": "go1.10.3",
  "Os": "linux",
  "Arch": "amd64",
  "KernelVersion": "3.10.0-327.el7.x86_64",
  "BuildTime": "2018-08-21T17:28:38.000000000+00:00"
}

# 浏览器访问http://ip:2375/info,如下:
{
  "ID": "YMWS:MELF:46CN:VKWN:ZPGT:5IGH:OAJV:LHP7:WXAN:AL4V:CK5H:WQR4",
  "Containers": 3,
  "ContainersRunning": 1,
  "ContainersPaused": 0,
  "ContainersStopped": 2,
  "Images": 7,
  "Driver": "vfs",
  "DriverStatus": null,
  "SystemStatus": null,
  "Plugins": {
    "Volume": [
      "local"
    ],
    "Network": [
      "bridge",
      "host",
      "macvlan",
      "null",
      "overlay"
    ],
    "Authorization": null,
    "Log": [
      "awslogs",
      "fluentd",
      "gcplogs",
      "gelf",
      "journald",
      "json-file",
      "logentries",
      "splunk",
      "syslog"
    ]
  },
  "MemoryLimit": true,
  "SwapLimit": true,
  "KernelMemory": true,
  "CpuCfsPeriod": true,
  "CpuCfsQuota": true,
  "CPUShares": true,
  "CPUSet": true,
  "IPv4Forwarding": true,
  "BridgeNfIptables": false,
  "BridgeNfIp6tables": false,
  "Debug": false,
  "NFd": 31,
  "OomKillDisable": true,
  "NGoroutines": 50,
  "SystemTime": "2024-10-21T23:08:53.473085631+08:00",
  "LoggingDriver": "json-file",
  "CgroupDriver": "cgroupfs",
  "NEventsListener": 0,
  "KernelVersion": "3.10.0-327.el7.x86_64",
  "OperatingSystem": "CentOS Linux 7 (Core)",
  "OSType": "linux",
  "Architecture": "x86_64",
  "IndexServerAddress": "https://index.docker.io/v1/",
  "RegistryConfig": {
    "AllowNondistributableArtifactsCIDRs": [],
    "AllowNondistributableArtifactsHostnames": [],
    "InsecureRegistryCIDRs": [
      "127.0.0.0/8"
    ],
    "IndexConfigs": {
      "docker.io": {
        "Name": "docker.io",
        "Mirrors": [],
        "Secure": true,
        "Official": true
      }
    },
    "Mirrors": []
  },
  "NCPU": 8,
  "MemTotal": 16658706432,
  "GenericResources": null,
  "DockerRootDir": "/var/lib/docker",
  "HttpProxy": "",
  "HttpsProxy": "",
  "NoProxy": "",
  "Name": "em.web.app",
  "Labels": [],
  "ExperimentalBuild": false,
  "ServerVersion": "18.06.1-ce",
  "ClusterStore": "",
  "ClusterAdvertise": "",
  "Runtimes": {
    "runc": {
      "path": "docker-runc"
    }
  },
  "DefaultRuntime": "runc",
  "Swarm": {
    "NodeID": "",
    "NodeAddr": "",
    "LocalNodeState": "inactive",
    "ControlAvailable": false,
    "Error": "",
    "RemoteManagers": null
  },
  "LiveRestoreEnabled": false,
  "Isolation": "",
  "InitBinary": "docker-init",
  "ContainerdCommit": {
    "ID": "468a545b9edcd5932818eb9de8e72413e616e86e",
    "Expected": "468a545b9edcd5932818eb9de8e72413e616e86e"
  },
  "RuncCommit": {
    "ID": "69663f0bd4b60df09991c08812a60108003fa340",
    "Expected": "69663f0bd4b60df09991c08812a60108003fa340"
  },
  "InitCommit": {
    "ID": "de40ad0",
    "Expected": "fec3683"
  },
  "SecurityOptions": [
    "name=seccomp,profile=default"
  ]
}

Dockerfile打包镜像(openjdk-arm64依赖

dockerfile文件事例

# 使用官方的OpenJDK基础镜像
FROM arm64v8/openjdk:8-jdk
 
# 设置环境变量,可以设置JAVA_OPTS来优化JVM参数
ENV JAVA_OPTS="-Xms512m -Xmx1024m"
 
# 复制jar文件到容器中
COPY ./spring-boot-1.0-SNAPSHOT.jar /app/my-app.jar

# 暴露端口18080
EXPOSE 18080
 
# 运行jar包
CMD java $JAVA_OPTS -jar /app/my-app.jar

保存文档到jar包目录下
运行

cd /data/
docker build -t 镜像名称:版本号 .

容器打包成镜像

docker commit 容器id 镜像名称:版本号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值