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

相关推荐
追风赶月、1 小时前
【Linux】线程概念与线程控制
linux·运维·服务器
工业3D_大熊1 小时前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
szc17671 小时前
docker 相关命令
java·docker·jenkins
CP-DD1 小时前
Docker 容器化开发 应用
运维·docker·容器
Stark-C1 小时前
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
macos·docker·策略模式
老司机张师傅2 小时前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since811922 小时前
[ruby on rails] 安装docker
后端·docker·ruby on rails
努力的悟空3 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
吴半杯3 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗3 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑