目录

1、安装docker

2、docker使用相关命令


具体说明如下:具体使用命令的时候最好切号为管理员root权限

使用su命令切号

1、安装docker

docker下载地址:

Index of /

Docker Docs

docker-compose和docker版本对应关系如下:

Compose file version 3 reference | Docker Docs

docker-compose 下载地址:

https://github.com/docker/compose/releases

由于安装docker的系统各不相同,具体可以查看需要安装docker的CPU架构和位数,然后进行安装。

查看系统的架构/版本:

cat /etc/kylin-release
uname -p
lscup

以上安装好docker后,下面安装docker-compose部分是可选的,使用docker-compose对于多服务启动可能会更方便一些。

下载docker-compose文件:根据需要下载对应的版本

https://github.com/docker/compose/releases

 接下来安装下载好的docker-compose(把下载好的文件放到服务器上)

# 在包含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

可选【创建软连接】

# 其中这个位置 /usr/software 根据服务器上软件存放位置
ln -s /usr/local/bin/docker-compose /usr/software

2、主机docker使用相关命令

查看docker的启动状态

systemctl status docker

启动docker

systemctl start docker

重载docker

systemctl daemon-reload

重启docker

systemctl restart docker

开机自启docker

systemctl enable docker

查看docker镜像

docker images

查看docker进程

docker ps

 查看所有容器(包括停止的)

docker ps -a

设置docker的TAG

# 以JDK举例
docker tag jdk:latest jdk:1.8

删除docker中没有版本的容器(镜像)

# -f 为强制删除
docker rmi -f 容器镜像ID(或者容器名称)

停止正在运行的容器 

docker stop 容器进程ID(docker ps列表中的ID)

启动已停止的容器

docker start 容器ID(container_id)

进入容器

docker exec -it 容器ID(container_id)/bin/bash

若是容器正在运行,则最好是先停止再删除!

构建docker镜像:docker build -t 容器名:版本号 .

# 以java后端服务举例 docker build -t 容器名:版本号 .
docker build -t java-server:1.0 .

注意:在构建镜像之前需要编辑好dockerfile文件,下面为样例文件

# 基础镜像(镜像名:版本号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查看编译好的镜像)其中后面端口是容器内的

docker run -it --restart=always -p 8088:8088 myserverapp:1.0

#--restart=always: 设置容器在任何情况下都自动重启。如果发生意外情况导致容器停止运行,Docker会尝试自动重新启动容器。-it: 创建一个交互式的终端会话,并将其连接到容器。

把docker服务打包

docker save -o java-server-1.0.tar.gz java-server:1.0

加载打包的docker服务包

docker load -i java-server-1.0.tar.gz

其他命令:

搜索镜像

docker search nginx

拉取镜像

docker pull nginx

推送镜像

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 文件,下面为样例文件

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文件就可以运行相关容器了。

启动服务

docker-compose up -d
# 当然也可以是
docker-compose up -d 服务名

查看启动的服务 docker ps/images

查看服务启动的日志(以java-server举例)

docker-compose logs -f java-server

停止具体的服务(以java-server举例)

docker-compose down java-server

重启具体的服务(以java-server举例)

docker-compose restart java-server
# 删除服务
docker rm -f java-server
# 删除镜像
docker rmi 文件夹名-服务名
docker rmi myserverapp_src-java-server
# 重新运行服务
docker-compose up -d java-server
# 启动服务:
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的一些基本使用方法。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐