Docker 相关内容记录

目录

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架构和位数,然后进行安装。

查看系统的架构/版本:

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的一些基本使用方法。

相关推荐
Java陈序员1 小时前
轻量强大!一款现代化的 Kubernetes 集群管理与监控工具!
云原生·容器·kubernetes
爱吃橘子橙子柚子1 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield2 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽2 天前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑3 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData3 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256603 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h3 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔3 天前
通过 Docker 创建开发环境
docker·开发环境