1、docker安装和配置
操作环境如下:
- openEuler 24.03 LTS;获取地址:见文末【相关资料】
- docker-ce-26.1.4;
准备工作:
bash
代码解读
复制代码
# 关闭 SELinux(Security-Enhanced Linux),因为 SELinux 可能会导致 Docker 的某些功能出现权限问题,尤其是与容器存储和挂载卷相关的操作。 #临时关闭 setenforce 0 #永久关闭 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #状态查询 sestatus
① 增加Docker源:
arduino
代码解读
复制代码
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
② 增加Docker源地址:
bash
代码解读
复制代码
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo
③ 更新缓存:
代码解读
复制代码
dnf makecache timer
④ 安装docker:
代码解读
复制代码
dnf install -y docker-ce-26.1.4
等待安装完成。
⑤ docker镜像加速:
bash
代码解读
复制代码
cd /etc/docker && vi daemon.json # 粘贴以下内容进行保存 { "registry-mirrors": [ "https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu", "https://docker.ckyl.me", "https://docker.awsl9527.cn" ] }
⑥ 设置docker开机自启
bash
代码解读
复制代码
systemctl enable docker
⑦ 修改docker创建容器的默认ulimit配置
perl
代码解读
复制代码
vi /usr/lib/systemd/system/docker.service # 编辑docker.service,在ExecStart命令后加上创建容器的默认ulimit配置,如下: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=65535:65535
⑧ 启动docker
sql
代码解读
复制代码
systemctl start docker
注意:
如果中途已经启动docker,修改配置文件后重启需使用以下命令来使配置生效。
代码解读
复制代码
systemctl daemon-reload systemctl restart docker
输入docker info
,查看docker信息的plugins
部分,可以看到有了buildx
和compose
插件,无需再单独安装docker compose
。
2、docker常用命令
bash
代码解读
复制代码
# 使用指定镜像运行一个容器,-p 指定端口映射; docker run -p [host_port]:[container_port] [image_name] #显示状态为运行的容器 docker ps #显示所有容器,包括运行中的和退出的 docker ps -a # 查看容器的日志 docker logs 容器ID # 查看容器的端口映射 docker port #重启一个容器 docker restart 容器ID #停止容器运行 docker stop 容器ID #删除一个容器 docker rm 容器ID #在容器里执行一个命令 docker exec # 进入容器控制台 docker exec -it 容器ID bash # 镜像操作,显示所有的镜像列表 docker images # # 从镜像仓库拉取镜像 docker pull # 实时查看容器日志 docker logs -f 容器ID
这篇文章《》演示了如何快速用docker
运行一个IT-TOOLS
工具站,有兴趣的可以去看看。
3、docker compose
docker compose
是用于定义和运行多容器docker
应用的工具。它使用一个YAML
文件(通常命名为docker-compose.yml
)来定义服务、网络和卷等资源。通过一条命令即可高效管理和操作这些容器。docker compose 的命令跟docker的差不多
1) docker compose 文件及释义
释义:
-
1)
services
:定义了一个服务(容器),这里是my-prometheus
; -
2)
networks
:定义了 Docker 网络,名为my_network
,用于容器之间的通信;- ①
driver: bridge
,使用桥接网络模式(默认模式);容器可以通过网络名称互相通信,但主机外部无法直接访问。 - ②
external: true
,表示my_network
是一个外部预先创建的网络,Compose 不会自动创建。所以在运行这个文件之前,需要手动创建网络docker network create my_network
。
- ①
-
3)
image: prom/prometheus:v2.40.1
,使用 Docker 镜像prom/prometheus
,版本为v2.40.1
; -
4)
container_name: my-prometheus
,创建一个容器名为my-prometheus
的prometheus容器; -
5)
ports: - "9090:9090"
,端口映射, 左边是映射到宿主机的端口,右边是内部端口9090; -
6)
volumns
,存储卷挂载,左边是宿主机的路径,右边是容器内部地址; -
7)
restart: always
,如果容器因故停止,Docker 会自动尝试重新启动容器,适合长期运行的服务。 -
8)
networks: - my_network
,将容器加入名为my_network
的 Docker 网络中,便于与其他容器通信
docker-compose.yml 内容如下:
yaml
代码解读
复制代码
services: my-prometheus: image: prom/prometheus:v2.40.1 container_name: my-prometheus ports: - "9090:9090" volumes: - /data/install/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml restart: always networks: - my_network networks: my_network: driver: bridge external: true
运行服务后,通过浏览器访问 http://主机IP:9090
查看 Prometheus 界面。
2) docker compose 常用命令
bash
代码解读
复制代码
# 显示所有容器 docker compose ps #删除所有nginx容器,镜像 docker compose down # 启动当前目录中docker-compose.yml文件中所有的服务; -d 用于在后台(daemon)运行Docker docker compose up -d # 指定某个xxx.yml启动其中所有的服务 docker compose -f xxx.yml up -d #构建建启动nignx容器 docker compose up -d nginx #登录到nginx容器中 docker compose exec nginx bash #重新启动nginx容器 docker compose restart nginx #停止nignx容器 docker compose stop nginx #启动nignx容器 docker compose start nginx #暂停nignx容器 docker compose pause nginx #恢复ningx容器 docker compose unpause nginx #查看nginx的日志 docker compose logs nginx #查看nginx的实时日志 docker compose logs -f nginx #删除容器(删除前必须关闭容器) docker compose rm nginx #在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器 docker compose run --no-deps --rm php-fpm php -v #验证(docker compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 docker compose config -q #以json的形式输出nginx的docker日志 docker compose events --json nginx