目录
具体说明如下:具体使用命令的时候最好切号为管理员root权限
使用su命令切号
1、安装docker
docker下载地址:
docker-compose和docker版本对应关系如下:
Compose file version 3 reference | Docker Docs
docker-compose 下载地址:
https://github.com/docker/compose/releases
由于安装docker的系统各不相同,具体可以查看需要安装docker的CPU架构和位数,然后进行安装。
查看系统的架构/版本:
bash
cat /etc/kylin-release
bash
uname -p
bash
lscup
以上安装好docker后,下面安装docker-compose部分是可选的,使用docker-compose对于多服务启动可能会更方便一些。
下载docker-compose文件:根据需要下载对应的版本
bash
https://github.com/docker/compose/releases
接下来安装下载好的docker-compose(把下载好的文件放到服务器上)
bash
# 在包含docker-compose-linux-x86_64文件夹下
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 授权这个文件
chmod 777 /usr/local/bin/docker-compose
# 当然也是可以直接授予可执行权限
chmod +x /usr/local/bin/docker-compose
# 最后查看是否安装成功
docker-compose --version
可选【创建软连接】
bash
# 其中这个位置 /usr/software 根据服务器上软件存放位置
ln -s /usr/local/bin/docker-compose /usr/software
2、主机docker使用相关命令
查看docker的启动状态
bash
systemctl status docker
启动docker
bash
systemctl start docker
重载docker
bash
systemctl daemon-reload
重启docker
bash
systemctl restart docker
开机自启docker
bash
systemctl enable docker
查看docker镜像
bash
docker images
查看docker进程
bash
docker ps
查看所有容器(包括停止的)
bash
docker ps -a
设置docker的TAG
bash
# 以JDK举例
docker tag jdk:latest jdk:1.8
删除docker中没有版本的容器(镜像)
bash
# -f 为强制删除
docker rmi -f 容器镜像ID(或者容器名称)
停止正在运行的容器
bash
docker stop 容器进程ID(docker ps列表中的ID)
启动已停止的容器
bash
docker start 容器ID(container_id)
进入容器
bash
docker exec -it 容器ID(container_id)/bin/bash
若是容器正在运行,则最好是先停止再删除!
构建docker镜像:docker build -t 容器名:版本号 .
bash
# 以java后端服务举例 docker build -t 容器名:版本号 .
docker build -t java-server:1.0 .
注意:在构建镜像之前需要编辑好dockerfile文件,下面为样例文件
bash
# 基础镜像(镜像名:版本号TAG)
FROM jdk:1.8
# 作者author
MAINTAINER xjs
# 挂载目录
VOLUME /home/soft/app
# 创建目录
RUN mkdir -p /home/soft/app
# 指定路径
WORKDIR /home/soft/app
# 复制jar文件到路径{注意:文件中的前面的内容都是容器外的 后面的内容为容器内的}
COPY ./jar/java-server.jar /home/soft/app/java-server.jar
COPY ./jar/config /home/soft/app/config
# 启动java后端服务,下面为java启动参数配置
# ENTRYPOINT ["java","-jar","java-server.jar"]
ENV JAVA_OPTS="\
-server \
-XX:+PrintFlagsFinal \
-Xmn1024M \
-Xms2048M \
-Xmx2048M \
-XX:+PrintGCDetails \
-XX:+PrintTenuringDistribution \
-XX:+PrintGCTimeStamps \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/home/soft/logs/java-server/java-server-hpdump.hprof \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=20M \
-XX:+UseConcMarkSweepGC \
-Xloggc:/home/soft/logs/java-server/auth.log"
# 指定容器内端口
# EXPOSE 8088
# 启动命令
# ENTRYPOINT java ${JAVA_OPTS} -jar java-server.jar
CMD ["java", "${JAVA_OPTS}", "-jar", "java-server.jar"]
其中上面的JAVA_OPTS部分可以不需要 (具体以项目看)
运行docker编译好的镜像(可以通docker images查看编译好的镜像)其中后面端口是容器内的
bash
docker run -it --restart=always -p 8088:8088 myserverapp:1.0
#--restart=always: 设置容器在任何情况下都自动重启。如果发生意外情况导致容器停止运行,Docker会尝试自动重新启动容器。-it: 创建一个交互式的终端会话,并将其连接到容器。
把docker服务打包
bash
docker save -o java-server-1.0.tar.gz java-server:1.0
加载打包的docker服务包
bash
docker load -i java-server-1.0.tar.gz
其他命令:
搜索镜像
bash
docker search nginx
拉取镜像
bash
docker pull nginx
推送镜像
bash
docker push nginx:1.18
日志和调试相关命令:
查看容器日志:docker logs 容器ID(container_id)
实时跟踪容器日志:docker logs -f 容器ID(container_id)
导出容器日志到文件:docker logs 容器ID(container_id) > logs.txt
查看容器内进程信息:docker top 容器ID(container_id)
在容器内运行命令:docker exec -it 容器ID(container_id) command_name
网络相关命令:
列出网络:docker network ls
创建网络:docker network create network_name
连接容器到网络:docker network connect network_name 容器ID(container_id)
断开容器与网络的连接:docker network disconnect network_name 容器ID(container_id)
使用Docker-compose
在使用docker-compose的时候需要编辑好 docker-compose.yml 文件,下面为样例文件
bash
version : '3.8'
services:
# mysql数据库
mysql:
container_name: mysql
image: mysql:8
ports:
- "3306:3306"
volumes:
- /home/soft/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
- /home/soft/mysql/logs:/logs
- /home/soft/mysql/data:/var/lib/mysql
privileged: true
command: [
'mysqld',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
environment:
MYSQL_ROOT_PASSWORD: 123456
restart: always
# postgres数据库
postgres:
container_name: postgres
image: postgis:14
ports:
- "5432:5432"
volumes:
- /home/soft/postgresql/data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: postgres
privileged: true
restart: always
# redis缓存库
redis:
container_name: redis
image: redis:6.0.8
ports:
- "6379:6379"
volumes:
- /home/soft/redis/conf/redis.conf:/etc/redis/redis.conf
- /home/soft/redis/data:/data
command: redis-server /etc/redis/redis.conf
privileged: true
restart: always
# nginx前端服务
nginx:
container_name: nginx
image: nginx:1.18
ports:
- "80:80"
volumes:
- /home/soft/nginx/html:/usr/share/nginx/html
- /home/soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /home/soft/nginx/logs:/var/log/nginx
restart: always
# 项目JAR包位置
java-server:
container_name: java-server
build:
#dockerfile文件的位置/jar
context: ./jar
dockerfile: dockerfile
#前面是容器外端口:日期内端口
ports:
- "8088:8088"
depends_on:
- redis
- postgres
volumes:
- /home/soft/logs:/home/soft/logs
- /home/soft/nginx/html:/home/soft/nginx/html
privileged: true
restart: always
具体可以根据实际项目情况修改即可!
有了docker-compose和配置好的docker-compose.yml文件就可以运行相关容器了。
启动服务
bash
docker-compose up -d
bash
# 当然也可以是
docker-compose up -d 服务名
查看启动的服务 docker ps/images
查看服务启动的日志(以java-server举例)
bash
docker-compose logs -f java-server
停止具体的服务(以java-server举例)
bash
docker-compose down java-server
重启具体的服务(以java-server举例)
bash
docker-compose restart java-server
bash
# 删除服务
docker rm -f java-server
# 删除镜像
docker rmi 文件夹名-服务名
docker rmi myserverapp_src-java-server
# 重新运行服务
docker-compose up -d java-server
bash
# 启动服务:
docker-compose up
# 后台启动服务:
docker-compose up -d
# 构建服务:
docker-compose build
# 停止服务:
docker-compose down
# 查看服务日志:
docker-compose logs
# 列出所有服务容器:
docker-compose ps
# 执行命令到服务容器:
docker-compose exec <service> <command>
# 查看服务状态:
docker-compose ps
# 重启服务:
docker-compose restart
# 构建服务但不启动:
docker-compose build --no-start
# 确保你的当前目录中有一个有效的docker-compose.yml文件,或者你可以通过--file选项指定其他文件。
# 例如,如果你有一个docker-compose.prod.yml文件,你可以这样运行:
docker-compose -f docker-compose.prod.yml up -d
以上就是Docker Compose的一些基本使用方法。