安装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: 将文件或者目录从构建上下文复制到容器中,并且会将压缩文件解压缩,支持 URLRUN: 在容器中执行命令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
结束语
有同学说,你为什么来卷我们?其实只要自己精力足够,并且喜欢,一切都是顺理成章的事情,加油2024!
希望本文对你有所帮助。
感谢阅读。