Linux Docker离线安装

Docker离线安装

官方推荐我们使用yum管理器一建安装与卸载Docker,但是不是所有的服务器都能访问到公网在线部署,特别是政府项目一般都在内网。并且yum命令必须是root来执行,如果是普通用户,虽然可以使用sudo来提权,还是非常不方便,这就可以使用安装包手动安装Docker。

1、下载Docker安装包

下载地址:https://download.docker.com/linux/static/stable/x86_64/

下载最新的压缩包上传至服务器,然后解压

[app@aliyun soft]$ ls
docker-20.10.14.tgz
[app@aliyun soft]$ tar -zxvf docker-20.10.14.tgz 

2、将Docker的相关命令拷贝到/usr/bin,方便我们使用这些命令

[app@aliyun soft]$ cp -p docker/* /usr/bin

# 如果是非root用户执行此命令需要保证 /usr/bin 目录要有写的权限否则会报如下异常(当然你也可以直接切换root执行此命令)

cp: cannot create regular file `/usr/bin/containerd': Permission denied
... 

# 解决办法要么切换 root 给用户授权要么使用 sudo 提权
[app@laizhenghua soft]$ sudo cp -p docker/* /usr/bin

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for app: 
app is not in the sudoers file.  This incident will be reported.

# 我们发现还是不行 这是因为没有权限进行sudo 所以还得切换 root 修改 /etc/sudoers
vim/etc/sudoers
# 找到 root    ALL=(ALL)       ALL 这一行模仿root新增一行配置如
app     ALL=(ALL)       ALL
# 注意退出时一定是 wq! 才行 不加 "!"会保存失败

# 切换 app 用户重新执行拷贝命令即可
[app@laizhenghua soft]$ sudo cp -p docker/* /usr/bin

3、将Docker注册为系统服务这也是非常关键的一步,需要新增/usr/lib/systemd/system/docker.service文件并编写配置。

[app@laizhenghua system]$ pwd
/usr/lib/systemd/system
[app@laizhenghua system]$ vim 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

4、启动/关闭Docker服务

systemctl start/stop docker

5、开启/取消开机自启Docker服务

systemctl enable/disable docker

6、非root用户执行不了Docker命令问题,如下所示(此时使用sudo提权即可)

[app@i-v6sas60k run]$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

但是我们不想使用sudo提权,就想普通用户也能无障碍执行Docker命令。此时修改/var/run/docker.sock所有者即可,例如

[root@i-v6sas60k run]# pwd
/var/run
# 修改 docker.sock 文件所有者为 app 用户
[root@i-v6sas60k run]# chown -R app docker.sock 

# 切换 app 用户 重新执行docker命令
[root@i-v6sas60k run]# su app
[app@i-v6sas60k run]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

你可能感兴趣的:(Docker,docker,运维,linux)