【离线/在线】CentOS7安装docker


前言

在CentOS7系统上离线跟在线两种方式安装docker


一、有网安装(yum安装)

1、安装命令
-y:安装途中不需要是否确认,直至安装成功~

yum install -y docker

2、确保yum包更新到最新版本

yum -y update

3、检查是否已经安装docker列表

yum list installed | grep docker

在这里插入图片描述
4、配置阿里云镜像

编辑配置文件:

vi /etc/docker/daemon.json

添加如下代码:

{
  "registry-mirrors": ["https://y0qd3iq.mirror.aliyuncs.com"]
}

二、无网安装

1、下载docker:docker离线安装包下载地址
本文下载的版本是:docker-18.06.3-ce.tgz

2、安装docker
将docker离线安装包上传到虚拟机中:
通过cmd命令窗口上传(没有Xftp可以用以下方式):

scp D:\Downloads\docker-18.06.3-ce.tgz root@192.168.0.132:/usr/local/

图文详解(仅供参考):
在这里插入图片描述
虚拟机:
在这里插入图片描述
3、解压安装包

tar -zxvf docker-18.06.3-ce.tgz

在这里插入图片描述

4、将解压后docker里的所有文件移至 /usr/bin/目录下

cp docker/* /usr/bin/

5、将docker注册为系统服务

vi /etc/systemd/system/docker.service

插入如下配置文件

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target

6、给配置文件添加执行权限

chmod +x /etc/systemd/system/docker.service

7、重新加载配置文件

systemctl daemon-reload

三、操作docker

1、启动docker服务

systemctl start docker

2、设置docker开机自启

# 设置开机自启动
systemctl enable docker
# 关闭开机自启动
systemctl disable docker
# 查看docker是否为开机自启
 systemctl is-enabled docker

2、查看docker状态

# 查看docker启动状态
systemctl status docker

在这里插入图片描述
running状态标识docker正在运行。

3、停止docker服务

systemctl stop docker

在这里插入图片描述

四、卸载docker

通过yum命令安装:
1、找出docker已安装的包

yum list installed | grep docker

在这里插入图片描述
2、通过命令删除这些包即可

yum remove docker.x86_64 docker-client.x86_64 docker-common.x86_64 -y

### shm_open 使用问题及解决方法 #### 头文件的选择 对于 `shm_open()` 函数,在某些情况下可能会遇到未定义符号的错误。这通常是因为选择了不合适的头文件。在《操作系统概念》一书中的例子可能使用了 `<sys/shm.h>`,但这并不适用于所有情况。为了使 `shm_open` 和其他相关函数正常工作,应该包含 `<fcntl.h>` 和 `<sys/mman.h>` 这两个头文件[^1]。 ```c #include <fcntl.h> /* For O_* constants */ #include <sys/mman.h> /* For mmap(), shm_open() etc. */ ``` #### 编译选项 `-lrt` 即使包含了正确的头文件,如果忘记链接实时库(Real-time library),仍然会出现类似的错误。因此,在编译命令中加入 `-lrt` 参数是非常重要的。例如: ```bash gcc -o my_program my_program.c -lrt ``` 这样可以确保程序能够找到并连接到必要的库函数[^2]。 #### 文件名格式与路径处理 另一个常见的问题是由于传递给 `shm_open` 的名字不符合预期而导致的操作失败。虽然 POSIX 标准允许带有斜杠的名字作为参数传入 `shm_open`,但在实际应用中这样做可能导致 EINVAL 错误。建议只提供简单的对象名称而不含任何目录分隔符。例如,“my_shared_memory_object”,而不是“/path/to/my_shared_memory_object”。这是因为 `/dev/shm` 已经被隐式指定为存储位置[^4]。 #### 检查返回值和错误码 当调用 `shm_open` 时应当始终检查其返回值是否有效,并通过 `errno` 或者 `perror` 来获取具体的错误信息。如果不做这样的验证就继续后续操作,则很可能引发段错误或其他不可预见的行为。比如下面这段代码展示了如何安全地打开一个共享内存区域: ```c int fd; fd = shm_open("/test", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) { perror("Failed to create shared memory object"); exit(EXIT_FAILURE); } // Continue with ftruncate and mmap... ``` #### 修改默认路径 有时开发者希望改变共享内存对象的实际存放地点,默认情况下这些对象位于 `/run/shm` 或 `/dev/shm` 下面。然而直接修改 API 调用来试图改变这一点通常是徒劳无功的;相反可以通过挂载一个新的 tmpfs 实例或者调整系统的配置来达到目的。不过需要注意的是这种做法超出了标准API的功能范围,所以并不是推荐的做法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值