欢迎光临
我们一直在努力

Docker的一些常用命令

docker常用命令

查看Docker容器的命令,可以使用docker ps -a命令。这将显示所有正在运行或已经停止的容器及其相关信息,包括容器ID、镜像名称、创建时间等。

如果需要获取特定容器的详细信息,可以使用docker inspect <container_id>命令来查看该容器的配置和状态。

下面是一些常用的Docker容器管理命令示例:

  1. docker run: 创建并运行新的容器。
  2. docker start/stop/restart: 分别启动、停止和重启指定的容器。
  3. docker exec: 进入到正在运行中的容器内部执行命令。
  4. docker logs: 输出容器的日志信息。
  5. docker rm: 删除不再需要的容器。
  6. docker images: 列出本地主机上存在的镜像。
  7. docker pull: 从互联网上拉取最新版本的镜像。
  8. docker push: 将自定义的镜像推送到互联网上共享。
  9. docker build: 根据 Dockerfile 构建新的镜像。

docker重启nginx

要在Docker中重新启动Nginx容器,可以按照以下步骤进行操作:

  1. 首先,确保已经安装了Docker并且正在运行。如果没有安装,请根据所使用的操作系统版本参考官方文档进行安装。
  2. 打开命令行界面(Terminal)或者PowerShell等工具。
  3. 输入以下命令来查看当前正在运行的Docker容器列表:docker ps -a这将显示所有正在运行的容器及其相关信息。
  4. 从结果中找到名为"nginx"的容器ID或名称。通常情况下,该容器应该处于“Up”状态。
  5. 若要重新启动Nginx容器,可以使用以下命令:docker restart <container_id>

查看环境变量

systemctl status docker

启动命令
systemctl start docker
设置自启项
systemctl enable docker.service
检测是否正确安装
docker -v
重启
systemctl restart docker

安装jenkins

1、docker search jenkins 搜索jenkins,并选择合适的版本

2、docker pull jenkins:版本号

3、启动容器

docker run \
-d \ # 标识是让 docker 容器在后台运行
--name my-jenkins \ # jenkins名字
-p 9999:8080 \ # jenkins的默认端口
-p 8888:8888 \ 
-p 50000:50000 \
--restart=always \
-u root \ # 加上才能在启动容器的时候读写jenkins_home文件的内容
-v /home/jenkins_home:/var/jenkins_home \ # jenkins工作空间目录
jenkins/jenkins:2.222.3-centos # 构建jenkins容器基于的镜像及版本

前台运行打包

docker-compose up

运行完成后大概率会报错,因为我们使用的mysql账号没有权限,所以需要进行设置

切换后台运行

// Ctrl+C 终止程序后执行后台运行命令, 用于本地运行
docker-compose up -d

docker-compose up正常用来测试本地打包,和第一次构建redismysql容器,后续需要在本地运行开发模式只需保证redismysql容器正常运行即可,如需再次打包只需重新构建server容器即可

docker-compose up -d --force-recreate --no-deps --build --remove-orphans server_docker

本地开发模式只需关闭server容器,然后在项目内只需 start:dev即可

docker stop server_docker
npm run start:dev

docker删除容器

把容器和镜像快速删除的方式:

docker-compose down --rmi all

要在Docker中删除容器,可以使用docker rm命令。

如果想要删除单个容器,只需指定容器的ID或名称作为参数传递给该命令即可。示例如下所示:

docker rm <container_id>

其中, <container_id> 是要删除的容器的ID或名称。

如果想要同时删除多个容器,可以将它们的ID或名称列表作为参数传递给该命令。示例如下所示:

docker rm container1 container2 container3 ...

这样就能同时删除多个容器了。

注意事项:

  • 当容器正在运行时无法直接删除,必须先停止容器后才能进行删除操作。
  • 若要永久性地删除容器及相关资源(包括存储卷),则应添加-v选项来删除与之关联的存储卷。示例如下所示:
docker rm -v <container_id>

Nest的docker-compose.yml

version: "3.0"

services: 
    # docker容器启动的redis默认是没有redis.conf的配置文件,所以用docker启动redis之前,需要先去官网下载redis.conf的配置文件
    redis_container: # 服务名称
        container_name: redis_container # 容器名称
        image: daocloud.io/library/redis:6.0.3-alpine3.11 # 使用官方镜像
        # 配置redis.conf方式启动
        # command: redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 --appendonly yes # 设置redis登录密码 123456、--appendonly yes:这个命令是用于开启redis数据持久化
        # 无需配置文件方式启动
        command: redis-server --appendonly yes # 开启redis数据持久化
        ports:
            - 6379:6379 # 本机端口:容器端口
        restart: on-failure # 自动重启
        volumes:
            - ./deploy/redis/db:/data # 把持久化数据挂载到宿主机
            - ./deploy/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  # 把redis的配置文件挂载到宿主机
            - ./deploy/redis/logs:/logs # 用来存放日志
        environment:
            - TZ=Asia/Shanghai  # 解决容器 时区的问题
        networks:
            - my-server_container

    mysql_container:
        container_name: mysql_container
        image: daocloud.io/library/mysql:8.0.20 # 使用官方镜像
        ports: 
            - 3306:3306 # 本机端口:容器端口
        restart: on-failure
        environment: 
            MYSQL_DATABASE: mysql_db
            MYSQL_ROOT_PASSWORD: 766277
            MYSQL_USER: mysql_user
            MYSQL_PASSWORD: 766277
            MYSQL_ROOT_HOST: '%'
        volumes:
            - ./deploy/mysql/db:/var/lib/mysql # 用来存放了数据库表文件
            - ./deploy/mysql/conf/my.cnf:/etc/my.cnf # 存放自定义的配置文件
            # 我们在启动MySQL容器时自动创建我们需要的数据库和表
            # mysql官方镜像中提供了容器启动时自动docker-entrypoint-initdb.d下的脚本的功能
            - ./deploy/mysql/init:/docker-entrypoint-initdb.d/ # 存放初始化的脚本
        networks: 
            - my-server_container

    server_container: # nestjs服务
        container_name: server_container
        build: # 根据Dockerfile构建镜像
            context: .
            dockerfile: Dockerfile
        ports: 
            - 9003:9003
        restart: on-failure # 设置自动重启,这一步必须设置,主要是存在mysql还没有启动完成就启动了node服务
        networks: 
            - my-server_container
        depends_on: # node服务依赖于mysql和redis
            - redis_container
            - mysql_container

# 声明一下网桥  my-server。
# 重要:将所有服务都挂载在同一网桥即可通过容器名来互相通信了
# 如nestjs连接mysql和redis,可以通过容器名来互相通信
networks:
    my-server_container:

本地开发模式只需关闭server容器,然后在项目内只需 start:dev即可

docker stop server_container
npm run start:dev

如果要在Jenkins容器中执行docker命令,那么在创建Jenkins容器时,就需要通过挂载卷形式,将宿主机的docker进程关联到jenkins容器内部,做如下配置后,切换目录执行docker-compose up重新执行yml文件

docker-compose up 启动服务

格式为:

[root@centos01 ~]# docker-compose up [options] [SERVICE...] 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

链接的服务都将会被自动启动,除非已经处于运行状态。

可以说,大部分时候都可以直接通过该命令来启动一个项目。

默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

当通过 Ctrl-C 停止命令时,所有容器将会停止。

如果使用 docker-compose up -d,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。

默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d < SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。

选项:

-d:在后台运行服务容器;

–no-color:不使用颜色来区分不同的服务的控制台输出;

–no-deps:不启动服务所链接的容器;

–force-recreate:强制重新创建容器,不能与 --no-recreate 同时使用;

–no-recreate:如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用;

–no-build:不自动构建缺失的服务镜像;

遇到的问题

docker_jenkins:
    user: root                                 # root权限
    restart: always                            # 重启方式
    image: jenkins/jenkins                     # 使用的镜像
    container_name: jenkins                    # 容器名称
    environment:
      - TZ=Asia/Shanghai
      - "JENKINS_OPTS=--prefix=/jenkins_home" ## 自定义 jenkins 访问前缀(上下文context)


    ports:                                     # 对外暴露的端口定义
      - 8080:8080
      - 50000:50000
      

    volumes:                                   # 卷挂载路径
      - /docker/jenkins_home/:/var/jenkins_home     # 挂载到容器内的jenkins_home目录
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
      - /run/docker.sock:/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker

docker配置mysql、redis

在Docker中配置MySQL和Redis是一种常见的开发和部署应用的方式。以下是如何在Docker中配置MySQL和Redis的步骤。

首先,确保你的系统已经安装了Docker。如果还没有安装,可以访问Docker的官方网站下载和安装。

一、配置MySQL

  1. 拉取MySQL镜像在Docker中,我们可以直接从Docker Hub上拉取官方的MySQL镜像。运行以下命令:
    docker pull mysql:5.7
    

    这将会下载MySQL 5.7版本的镜像。

  2. 运行MySQL容器下载完MySQL镜像后,我们可以创建并运行一个MySQL容器。在运行容器时,我们需要设置一些环境变量,比如 MYSQL_ROOT_PASSWORD,这是root用户的密码。
    # docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
    
    
    docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql:latest
    

    这将会创建并运行一个名为 some-mysql的MySQL容器,并将root用户的密码设置为 my-secret-pw

  3. 连接到MySQL容器我们可以使用MySQL客户端工具连接到刚才创建的MySQL容器。首先,找到MySQL容器的IP地址:
    docker inspect some-mysql | grep IPAddress
    

    然后,使用MySQL客户端工具连接到MySQL容器:

    mysql -h <MySQL-Container-IP> -u root -p
    

    输入root用户的密码,就可以成功连接到MySQL容器了。

二、配置Redis

  1. 拉取Redis镜像同样地,我们也可以从Docker Hub上拉取官方的Redis镜像。运行以下命令:
    docker pull redis
    

    这将会下载最新版本的Redis镜像。

  2. 运行Redis容器下载完Redis镜像后,我们可以创建并运行一个Redis容器。
    docker run --name some-redis -d redis
    

    这将会创建并运行一个名为 some-redis的Redis容器。

  3. 连接到Redis容器我们可以使用Redis客户端工具连接到刚才创建的Redis容器。首先,找到Redis容器的IP地址:
    docker inspect some-redis | grep IPAddress
    

    然后,使用Redis客户端工具连接到Redis容器:

    redis-cli -h <Redis-Container-IP>
    

    这样,我们就可以成功连接到Redis容器了。

以上就是在Docker中配置MySQL和Redis的步骤。使用Docker配置这些服务的好处是,可以快速地在任何支持Docker的平台上部署和运行应用,而不需要手动安装和配置这些服务。并且,Docker的隔离性能确保了应用的稳定性和安全性。

未经允许不得转载:798VPS » Docker的一些常用命令

相关推荐

  • 暂无文章