docker離線安裝指南
背景
由于公司內(nèi)部的服務(wù)器不能連通外網(wǎng),并且也沒有給yum源,所以需要下載docker安裝包進(jìn)行離線安裝。
安裝過程
首先去網(wǎng)站下載docker安裝包,我這里選擇和公司服務(wù)器上的docker一致的版本:docker-19.03.3.tgz,然后上傳到需要安裝docker的服務(wù)器。
1)首先解壓壓縮包,此時會在當(dāng)前目錄下生成一個docker目錄,在docker目錄下全是可執(zhí)行文件。
tar -xzvf docker-19.03.3.tgz docker/ docker/docker docker/runc docker/ctr docker/dockerd docker/docker-init docker/docker-proxy docker/containerd-shim-runc-v2 docker/containerd-shim docker/containerd
2)將1)中解壓得到的二進(jìn)制文件全復(fù)制到/usr/bin目錄下。
cd docker cp * /usr/bin/
3)將docker注冊成系統(tǒng)服務(wù)
執(zhí)行“vim /etc/systemd/system/docker.service”命令,然后在文件中添加以下內(nèi)容,退出并保存。
下面的配置需要注意的是 : ExecStart=/usr/bin/dockerd,也就是說指明了dockerd所在位置。我第一次安裝沒有將1)中所有的二進(jìn)制復(fù)制到/usr/bin/,
[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
給文件增加可執(zhí)行權(quán)限
chmod +x /etc/systemd/system/docker.service systemctl daemon-reload
4)設(shè)置開機自啟動
systemctl enable docker.service
5) 啟動docker
systemctl start docker
6)測試docker是否啟動
docker ps
如果打印出如下信息,則表示正確安裝,如果提示
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
則表示docker沒有安裝正確。

過程中遇到的錯誤
1)在將docker注冊成系統(tǒng)服務(wù)時,需要注意的是 : ExecStart=/usr/bin/dockerd,也就是說指明了dockerd所在位置。
我第一次安裝沒有將1)中所有的二進(jìn)制復(fù)制到/usr/bin/下,造成在執(zhí)行systemctl start docker時,報錯:
Process: 28545 ExecStart=/usr/bin/dockerd (code=exited, status=203/EXEC)
這是因為程序沒有在/usr/bin下找到dockerd可執(zhí)行程序,因此報錯。
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. ● docker.service - Docker Application Container Engine Loaded: loaded (/etc/systemd/system/docker.service; disabled; vendor preset: disabled) Active: failed (Result: start-limit) since 四 2020-11-12 11:27:15 CST; 37s ago Docs: https://docs.docker.com Process: 28545 ExecStart=/usr/bin/dockerd (code=exited, status=203/EXEC) Main PID: 28545 (code=exited, status=203/EXEC) 11月 12 11:27:15 host-90-0-0-80 systemd[1]: Failed to start Docker Application Container Engine. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: Unit docker.service entered failed state. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: docker.service failed. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: docker.service holdoff time over, scheduling restart. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: start request repeated too quickly for docker.service 11月 12 11:27:15 host-90-0-0-80 systemd[1]: Failed to start Docker Application Container Engine. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: Unit docker.service entered failed state. 11月 12 11:27:15 host-90-0-0-80 systemd[1]: docker.service failed.
2)關(guān)于 /etc/docker/daemon.json 的錯誤
剛開始遇到1)的錯誤時,copy了公司其他docker服務(wù)器上的 /etc/docker/daemon.json,報錯:
Process: 3706 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
此時主要觀察到daemon.json的 “data-root”: “/data/docker”, 然而在安裝的時候,我在/data/docker 下放置了解壓的二進(jìn)制文件,導(dǎo)致相關(guān)目錄無法創(chuàng)建,從而導(dǎo)致docker在讀取 /etc/docker/daemon.json后發(fā)生錯誤。
[root@tt init.d]# service docker start
Redirecting to /bin/systemctl start docker.service
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
# 根據(jù)提示使用相關(guān)命令查看啟動時錯誤日志
[root@tt init.d]# systemctl status docker.service
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Mon 2018-07-02 22:20:05 EDT; 10s ago
Docs: https://docs.docker.com
Process: 3706 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
Main PID: 3706 (code=exited, status=1/FAILURE)
Jul 02 22:20:05 localhost systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Jul 02 22:20:05 localhost systemd[1]: Failed to start Docker Application Container Engine.
Jul 02 22:20:05 localhost systemd[1]: Unit docker.service entered failed state.
Jul 02 22:20:05 localhost systemd[1]: docker.service failed.
Jul 02 22:20:05 localhost systemd[1]: docker.service holdoff time over, scheduling restart.
Jul 02 22:20:05 localhost systemd[1]: start request repeated too quickly for docker.service
Jul 02 22:20:05 localhost systemd[1]: Failed to start Docker Application Container Engine.
Jul 02 22:20:05 localhost systemd[1]: Unit docker.service entered failed state.
Jul 02 22:20:05 localhost systemd[1]: docker.service failed.
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker容器無法訪問外網(wǎng),但宿主機卻可以訪問的解決方案
本文詳細(xì)介紹了Docker容器無法訪問外網(wǎng)的常見原因及其解決方法,包括檢查Docker服務(wù)狀態(tài)、網(wǎng)絡(luò)設(shè)置、宿主機網(wǎng)絡(luò)連接、防火墻設(shè)置、重建docker0網(wǎng)絡(luò)、開啟IP轉(zhuǎn)發(fā)功能、修改DNS設(shè)置以及使用--net=host模式等2024-11-11
Centos7 安裝部署Kubernetes(k8s)集群實現(xiàn)過程
這篇文章主要為大家介紹了Centos7 安裝部署Kubernetes(k8s)集群實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
一次Docker中Redis連接暴增的問題排查實戰(zhàn)記錄
這篇文章主要給大家介紹了一次Docker中Redis連接暴增的問題排查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
使用Docker構(gòu)建多環(huán)境應(yīng)用的完整指南
Docker已經(jīng)成為了現(xiàn)代應(yīng)用程序開發(fā)和部署的核心工具之一,本文將介紹如何使用Docker構(gòu)建多環(huán)境應(yīng)用,包括開發(fā)、測試和生產(chǎn)環(huán)境,希望對大家有所幫助2025-08-08

