Docker:在国产欧拉系统安装部署及docker和docker compose使用,附常用命令【建议收藏】

docker:在国产欧拉系统安装部署及docker和docker compose使用,附常用命令【建议收藏】

引言

前面一篇文章对docker的作用和重大版本变更做了描述,有兴趣的可以去看看《》,此文不赘述。

体会很深的一句话,送给各位:

技术虽然重要,但它本身并不直接产生巨大的或过度的价值,其价值在于如何被应用。此时选择用这篇文章来分享实现它的一部分价值。

1、docker安装和配置

操作环境如下:

  • openEuler 24.03 LTS;获取地址:见文末【相关资料】
  • docker-ce-26.1.4;

准备工作

1
2
3
4
5
6
7
8
9
# 关闭 SELinux(Security-Enhanced Linux),因为 SELinux 可能会导致 Docker 的某些功能出现权限问题,尤其是与容器存储和挂载卷相关的操作。
#临时关闭
setenforce 0

#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#状态查询
sestatus

① 增加Docker源:

1
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

② 增加Docker源地址:

1
sed -i 's/$releasever/7/g' /etc/yum.repos.d/docker-ce.repo

③ 更新缓存:

1
dnf makecache timer

④ 安装docker:

1
dnf install -y docker-ce-26.1.4

等待安装完成。

⑤ docker镜像加速:

1
2
3
4
5
6
7
8
9
10
11
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开机自启

1
systemctl enable docker

⑦ 修改docker创建容器的默认ulimit配置

1
2
3
4
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

1
systemctl start docker

注意:

如果中途已经启动docker,修改配置文件后重启需使用以下命令来使配置生效。

1
2
systemctl daemon-reload
systemctl restart docker

输入docker info,查看docker信息的plugins部分,可以看到有了buildxcompose插件,无需再单独安装docker compose

2、docker常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 使用指定镜像运行一个容器,-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 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 显示所有容器
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

相关资料

docker 以及docker compose的简单使用就到这儿了。

  • 欧拉系统介绍:《》

结语

本文初步介绍了在openEuler系统上的docker安装配置镜像加速docker常用命令docker compose文件示例及解释docker compose常用命令等,后续还会继续分享基于在生产环境的使用。

文章创建日期2024年11月20日,你好,我是程序员七平,有帮助的话还请点个关注,谢谢。