docker,Dockerfile,docker-compose笔记

docker容器常用命令

# 运行容器(c_name 为容器名)
docker run -it --rm image bash  # 退出后就删除
docker run -itd --name c_name -p 10022:22 -v ./share:/home image:latest

docker run -d:后台运行容器,不保留交互能力。
docker run -it:前台运行容器,保留交互能力。
docker run -itd:后台运行容器,保留交互能力,允许在需要时连接到容器的终端

# 进入容器
docker exec -it c_name bash  # 进入容器后开启一个新的终端
docker attach c_name  # 进入容器正在执行的终端,不会开启新的进程

# 删除容器
docker rm c_name
docker rm -f $(docker ps -aq)  # 删除所有容器

# 其他命令
docker commit c_name c_image:tag  # 提交容器为镜像
docker commit -m="提交信息" -a="作者信息" c_name c_image:tag
docker top c_name # 查看容器内部进程信息
docker inspect c_name # 查看容器元数据
docker cp c_name:/home/test.txt ./data  # 拷贝容器内文件到本机
docker cp ./data c_name:/home  # 拷贝本机文件到容器内
docker rename c_name c_name_new  # 容器改名

docker镜像常用命令

# 查找镜像
docker search image
# 拉取镜像
docker poll image  # 默认latest
docker poll image:1.2.3  # 特定版本

# 删除镜像
docker rmi image
docker rmi -f $(docker images -aq)  # 删除全部

# 保存镜像
docker save image -o ./myimg.tar
# 加载镜像
docker load -i ./myimg.tar

Dockerfile

# 基础镜像,指定一个已经存在的镜像作为模板,第一条必须是FROM 
FROM python:3.8.10

# 环境变量
ENV MY_PATH /usr/mytest  # 容器构建和运行时可用,可被运行时-e环境变量覆盖
ARG BASE_IMAGE=ubuntu:20.04  # 仅构建时可用,可被构建时--build-arg环境变量覆盖

# 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
WORKDIR /home

# 将宿主机目录下的文件拷贝进镜像, ADD会自动处理URL和解压tar压缩包
ADD ./share /home
COPY ./share /home

# 容器构建时需要运行的命令
RUN apt-get update
RUN apt-get install -y openssh-server
RUN useradd -m user && echo 'user:123456' | chpasswd

# 指定该镜像执行用户,默认是root
USER user

# 容器数据卷,用于数据保存和持久化工作
VOLUME /home

# 当前容器对外暴露出的端口
EXPOSE 22

# 指定容器启动后的要干的事情
# 使用 Shell 形式
CMD echo "Hello, World!"
# 使用 Exec 形式
CMD ["echo", "Hello, World!"]
# docker run <image> echo "Goodbye, World!"  CMD 中指定的命令将被覆盖

# 使用 Shell 形式
ENTRYPOINT echo "Hello, World!"
# 使用 Exec 形式
ENTRYPOINT ["echo", "Hello, World!"]
# docker run <image> "Goodbye, World!"  命令将作为参数传递给 ENTRYPOINT

# 通常,ENTRYPOINT 用于指定主命令,而 CMD 用于提供默认参数。
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]
# 如果不提供任何命令行参数,则运行 echo Hello, World!。
# 如果提供了其他命令行参数,则这些参数将替代 CMD 的默认参数
# 构建镜像,在Dockerfile同级目录下构建
docker build -t myimage .
docker build --no-cache -t myimage .  #  不使用之前缓存
docker build --build-arg BASE_IMAGE=alpine:3.12 -t myimage .  # 设置arg环境变量

docker-compose.yml

version: "3.8"
services:
  mysql:
    image: mysql:8.0
    container_name: ruoyi-mysql
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ry-vue
      - MYSQL_USER=ruoyi
      - MYSQL_PASSWORD=123456
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/sql:/docker-entrypoint-initdb.d

  redis:
    image: redis:7.2
    container_name: ruoyi-redis
    restart: always
    ports:
      - 6379:6379
    volumes:
      - ./redis/data:/data

  backend:
    image: openjdk:8u342
    container_name: ruoyi-backend
    restart: always
    ports:
      - 8080:8080
    volumes:
      - ./backend/ruoyi-admin.jar:/home/backend/ruoyi-admin.jar
    environment:
      - TZ=Asia/Shanghai
    command: ["java", "-jar", "/home/backend/ruoyi-admin.jar"]
    depends_on:
      - redis
      - mysql

  frontend:
    image: nginx:1.25
    container_name: ruoyi-frontend
    restart: always
    ports:
      - 8088:80
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./nginx/dist:/home/nginx/dist
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - backend
# 启动Docker Compose
docker-compose up -d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值