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 镜像名称:版本号