docker:在国产欧拉系统安装部署及docker和docker compose使用,附常用命令【建议收藏】
引言
前面一篇文章对docker的作用和重大版本变更做了描述,有兴趣的可以去看看《Docker介绍和docker重大版本变更历史》,此文不赘述。
体会很深的一句话,送给各位:
技术虽然重要,但它本身并不直接产生巨大的或过度的价值,其价值在于如何被应用。此时选择用这篇文章来分享实现它的一部分价值。
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
相关资料
- openEuler 24.03 LTS:www.openeuler.org/zh/download…
docker 以及docker compose的简单使用就到这儿了。
- 欧拉系统介绍:《》
结语
本文初步介绍了在openEuler系统上的docker安装、配置镜像加速、docker常用命令、docker compose文件示例及解释、docker compose常用命令等,后续还会继续分享基于在生产环境的使用。
文章创建日期2024年11月20日,你好,我是程序员七平,有帮助的话还请点个关注,谢谢。
评论记录:
回复评论: