一、Docker 安装
# 1: 安装必要的一些系统工具 sudo yum install -y yum-utils # 2: 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3: 安装Docker yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 4: 开启Docker服务 service docker start
1、配置加速器
##因为一些神秘原因,需要加速器(在网上找找都可以找到)
[root@clickhouse1 ~]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://docker.1ms.run"] } [root@clickhouse1 ~]# systemctl daemon-reload [root@clickhouse1 ~]# systemctl restart docker
二、常用 Docker 命令
1 、镜像操作
docker search nginx # 搜索镜像 docker pull nginx # 下载镜像 docker images # 查看镜像列表 docker rmi nginx # 删除镜像
2、 容器操作
docker run -it centos /bin/bash # 交互式启动容器 docker ps -a # 查看所有容器 docker start/stop/restart 容器ID # 启动/停止/重启容器 docker rm 容器ID # 删除容器
3 、常用参数说明
docker run -d -p 8080:80 --name web nginx # -d:后台运行 # -p:端口映射(宿主:容器) # --name:容器命名
三、Dockerfile 构建镜像
1 、Dockerfile 示例
# 指定基础镜像 FROM centos:7 # 执行命令(安装、复制、配置) RUN yum install -y nginx # 拷贝文件 COPY ./index.html /usr/share/nginx/html/index.html # 容器启动时执行的命令 CMD ["nginx", "-g", "daemon off;"] # 开放端口 EXPOSE 80 # 设置工作目录 WORKDIR /usr/share/nginx/html
指令 说明 FROM指定基础镜像(必须第一行) MAINTAINER指定作者信息(可选) RUN执行命令,例如安装软件包 CMD容器启动时运行的命令(只能有一个) ENTRYPOINT类似 CMD,但更强制执行COPY拷贝本地文件/目录到镜像中 ADD类似 COPY,但支持解压和 URL WORKDIR设置工作目录(后续 RUN/CMD 等命令在此目录下执行) EXPOSE声明容器对外暴露的端口(实际不映射,需 -p配合)ENV设置环境变量 VOLUME定义挂载卷 ARG构建参数(build 时传入) LABEL设置元数据
2、 构建命令
docker build -t mynginx:1.0 .##注意有个点
四、数据卷(Volumes)
1、宿主机目录挂载
docker run -d -v /data:/usr/share/nginx/html -p 8080:80 nginx-v 挂载
2 、命名数据卷
docker volume create mydata docker run -d -v mydata:/app/data myapp docker volume ls
五、Docker 网络
1 、默认网络类型
bridge(默认)
host
none
overlay(Swarm)
2 、自定义网络
docker network create --driver bridge mynet docker run -d --name app1 --network mynet nginx docker run -d --name app2 --network mynet busybox sleep 3600 docker exec -it app2 ping app1
3、设置端口
方式 1:本地端口 81 映射到容器 80 端口: # docker run -p 81:80 --name 容器name nginx 方式 2:本地 IP:本地端口:容器端口 # docker run -p 192.168.10.205:82:80 --name 容器name docker.io/nginx 方式 3:本地 IP:本地随机端口:容器端口 # docker run -p 192.168.10.205::80--name 容器name docker.io/nginx 方式 4:本机 ip:本地端口:容器端口/协议,默认为 tcp 协议 # docker run -p 192.168.10.205:83:80/udp --name 容器name docker.io/nginx 方式 5:一次性映射多个端口+协议: # docker run -p 86:80/tcp -p 443:443/tcp -p 53:53/udp --name 容器name docker.io/nginx
六、实战项目案例
1 、使用 Docker 快速部署 WordPress + MySQL
docker network create wp-net docker run -d --name mysql \ --network wp-net \ -e MYSQL_ROOT_PASSWORD=root \ -e MYSQL_DATABASE=wordpress \ -e MYSQL_USER=wpuser \ -e MYSQL_PASSWORD=wppass \ mysql:5.7 docker run -d --name wordpress \ --network wp-net \ -p 8080:80 \ -e WORDPRESS_DB_HOST=mysql \ -e WORDPRESS_DB_USER=wpuser \ -e WORDPRESS_DB_PASSWORD=wppass \ -e WORDPRESS_DB_NAME=wordpress \ wordpress
七、Docker Compose 编排
1 、安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose####有时候网络不行
2、 示例 docker-compose.yml
version: '3.8' #这个可能会高 services: db: image: mysql:5.7 container_name: wp-mysql restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppass MYSQL_ROOT_PASSWORD: rootpass volumes: - db_data:/var/lib/mysql wordpress: image: wordpress container_name: wp-app restart: always ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wpuser WORDPRESS_DB_PASSWORD: wppass depends_on: - db volumes: db_data:
字段 说明 services所有容器服务的定义 image指定使用的镜像 build指定 Dockerfile 构建路径 ports宿主机与容器端口映射 volumes数据挂载目录 environment设置环境变量 depends_on设置依赖顺序 networks加入网络 restart自动重启策略(如 always、unless-stopped)
####补充
.env 文件支持
.env 文件内容: MYSQL_PASSWORD=my-secret
docker-compose.yml中用法:environment: - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
3 、启动
docker-compose up -d ##启动 docker-compose down ## 停止
命令 功能 docker-compose up -d启动所有容器(后台) docker-compose down停止并删除容器、网络 docker-compose ps查看当前运行服务 docker-compose logs -f查看日志 docker-compose exec 服务名 bash进入容器 docker-compose build重新构建镜像 docker-compose restart重启服务
####有待补充


11万+

被折叠的 条评论
为什么被折叠?



