2024年了,前端入门docker笔记

106 阅读2分钟

安装docker

先卸载系统之前的老版本docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker

# 查看当前的系统,要求系统内核3.0以上
uname -r

# 安装依赖包(如果未安装的话)
yum install -y yum-utils

# 设置国内阿里镜像仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新yum软件包索引
yum makecache fast

## 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

## 安装完验证
docker version

# 启动docker服务
systemctl start docker

# 设为开机自启动
systemctl enable docker

# 查看客户端和服务端docker版本
docker version

# 查看docker信息
docker info

# 运行hello world, 运行后输出Hello from Docker!表示docker环境安装配置成功了!
docker run hello-world

# 查看docker进程
ps -ef | grep docker

容器和镜像常用命令

容器命令:

docker --help

# 创建并启动容器,docker run -d -it --name verdaccio  -p 80:4873  -v $V_PATH/conf:/verdaccio/conf   verdaccio/verdaccio
# -d: 后台运行容器,并返回容器ID;
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
# --name: 为容器指定一个名称;
# -v: 绑定宿主机目录到容器目录,格式为:宿主机目录:容器目录;
# -i: 以交互模式运行容器,通常与-t一起使用;
# -t: 为容器重新分配一个伪输入终端,通常与-i一起使用;
# --restart: 容器退出后自动重启策略,有always、no
# --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
docker run [options] <image_name>


# 查看所有容器(包括停止的)
docker ps -a
# 查看最近一次创建的容器
docker ps -l
# 查看正在运行的容器ID列表
docker ps -q
# 查看全部容器ID列表
docker ps -aq

# 停止容器
docker stop <container_id_or_name>

# 使用容器ID停止多个正在运行的容器
docker stop `docker ps -q`

# 启动已停止容器
docker start <container_id_or_name>

# 使用容器ID启动多个已停止的容器
docker start `docker ps -aq`

# 进入容器 bash也可以是sh
docker exec -it <container_id_or_name> /bin/bash

# 删除容器
docker rm <container_id_or_name>

# 删除多个容器,运行中的无法删除
docker rm `docker ps -aq`

# 查看容器日志
docker logs <container_id_or_name>

# 查看容器信息
docker inspect <container_id_or_name>

# 将容器中 /app/html 目录拷贝到宿主机 /mnt/ 目录中
docker cp <container_id>:/app/html /mnt/

# 将容器中 /app/html/index.html 文件拷贝到宿主机 /mnt/dist/ 目录中
docker cp <container_id>:/app/html/index.html /mnt/dist/

# 将宿主机 /mnt/dist 目录拷贝到容器的 /app 目录中
docker cp /mnt/dist <container_id>:/app/

# 将宿主机 /mnt/dist/index.html 文件拷贝到容器的 /app/html 目录中
docker cp /mnt/dist/index.html <container_id>:/app/html/

# 将宿主机 /mnt/dist 目录拷贝到容器的 /app/ 中重命名为 html
docker cp /mnt/dist <container_id>:/app/html

# 将宿主机 /mnt/dist/index1.html 文件拷贝到容器的 /app/html/ 中重命名为 index.html
docker cp /mnt/dist/index1.html <container_id>:/app/html/index.html

镜像命令:

# 查看本地所有镜像:
docker images

# 搜索镜像,例如: docker search tomcat
docker search <image_name>

#从 Docker Hub 下载镜像,例如:docker pull tomcat
docker pull <image_name>

#删除本地镜像:
docker rmi <image_id_or_name>

# 全部删除本地镜像
docker rmi `docker images -q`

# 构建镜像:
docker build -t <image_name:tag> <path_to_Dockerfile>

# 导出镜像到文件,docker save -o 给导出的镜像压缩包起个文件名 要导出的镜像名:版本号
# 例如:docker save -o image.tar target_image:tag
docker save -o <output_file_name>.tar <image_name>

#从文件导入镜像,例如:docker load -i image.tar
docker load -i <input_file_name>.tar

构建镜像:

Docker build 命令可以使用 Dockerfile 来构建镜像。默认情况下,Dockerfile 文件位于构建上下文的根目录下,因此 docker build 命令会自动读取上下文根路径下名为 Dockerfile 的文件。如果 Dockerfile 文件不在根目录下,可以使用 -f 选项来指定 Dockerfile 文件的路径。例如,以下命令将使用 /path/to/Dockerfile 文件构建镜像:

docker build -f /path/to/Dockerfile -t image_name:tag .

Dockerfile 简单列举几个指令:

  • FROM : 指定基础镜像
  • WORKDIR : 指定工作目录
  • COPY : 将文件或者目录从构建上下文复制到容器中(推荐)
  • ADD : 将文件或者目录从构建上下文复制到容器中,并且会将压缩文件解压缩,支持 URL
  • RUN : 在容器中执行命令
  • CMD : 容器启动时执行的命令
  • EXPOSE : 指定要监听的端口以实现与外部通信

Dockerfile内容举例:

# nodejs server Dockerfile

# FROM node
# or
FROM node:16

WORKDIR /nodeApp

# COPY <宿主机目录或文件路径> <容器内目录或文件路径>
COPY ./package.json .
# ADD <宿主机目录或文件路径> <容器内目录或文件路径>
# ADD ./package.json .

# shell格式:就像在命令行中输入的Shell脚本命令一样。
RUN npm install

COPY ./src ./server

EXPOSE 8000

CMD ["node", "./server/index.js"]

网络命令:

# 查看 Docker 网络:
docker network ls

# 创建网络:
docker network create <network_name>

# 查看网络详情:
docker network inspect <network_id_or_name>

其他命令:

# 查看 Docker 版本:
docker version

# 查看 Docker 信息:
docker info

# 清理无用资源:
docker system prune

# 查看容器内进程:
docker top <container_id_or_name>

安装docker-compose

为了方便在开发环境的centos上安装各种软件环境,采用docker-compose的方式可以作为首选。

安装文档:docs.docker.com/compose/ins…

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 

chmod +x /usr/local/bin/docker-compose

# 查看安装好的版本
docker-compose --version

docker-compose常用命令

# 启动所有服务
docker-compose up

# 在后台运行服务:
docker-compose up -d

# 强制重新构建服务
docker-compose up --build

# 停止并移除由 docker-compose up 创建的容器、网络、卷和默认镜像
docker-compose down 

# 停止服务并移除卷
docker-compose down -v

# 查看所有服务日志
docker-compose logs

# 跟踪日志输出
docker-compose logs -f

#进入容器的交互式命令行
docker-compose exec <service_name> /bin/sh

# 执行特定命令
docker-compose exec <service_name> ls -l

#停止服务,但不移除容器。
docker-compose stop

# 启动已停止的服务。
docker-compose start

# 重启服务。
docker-compose restart

# 拉取服务依赖的镜像
docker-compose pull

# 构建或重新构建服务。
docker-compose build

# 移除已停止的容器。
docker-compose rm

K8S

kubernetes官方文档

结束语

有同学说,你为什么来卷我们?其实只要自己精力足够,并且喜欢,一切都是顺理成章的事情,加油2024!

希望本文对你有所帮助。

感谢阅读。