Docker离线安装

一、下载docker离线安装包并安装

1.1 下载docker离线安装包

下载合适版本,以linux_x86_64为例下载地址:Index of linux/static/stable/x86_64/ (docker.com)本次下载的是docker-23.0.0.tgz然后解压缩后有以下文件:

1
2
3
4
5
6
7
8
9
10
11
12
[root@192 docker]# tar -zxvf docker-23.0.0.tgz 

[root@192 /]# ls -l /docker/
总用量 179180
-rwxr-xr-x. 1 admin admin 38203392 2月 2 2023 containerd
-rwxr-xr-x. 1 admin admin 9752576 2月 2 2023 containerd-shim-runc-v2
-rwxr-xr-x. 1 admin admin 19152896 2月 2 2023 ctr
-rwxr-xr-x. 1 admin admin 34498624 2月 2 2023 docker
-rwxr-xr-x. 1 admin admin 64941936 2月 2 2023 dockerd
-rwxr-xr-x. 1 admin admin 765808 2月 2 2023 docker-init
-rwxr-xr-x. 1 admin admin 1945195 2月 2 2023 docker-proxy
-rwxr-xr-x. 1 admin admin 14214368 2月 2 2023 runc

1.2然后将这些文件复制到/usr/bin执行文件目录下并赋予执行权限

1
2
3
4
5
6
7
8
9
10
[root@192 docker]# cp /docker/* /usr/bin/

[root@192 docker]# chmod +x /usr/bin/containerd
[root@192 docker]# chmod +x /usr/bin/containerd-shim-runc-v2
[root@192 docker]# chmod +x /usr/bin/ctr
[root@192 docker]# chmod +x /usr/bin/docker
[root@192 docker]# chmod +x /usr/bin/dockerd
[root@192 docker]# chmod +x /usr/bin/docker-init
[root@192 docker]# chmod +x /usr/bin/docker-proxy
[root@192 docker]# chmod +x /usr/bin/runc

1.3启动docker并验证是否安装成功

1
2
3
4
5
6
7
8
[root@192 /]# sudo /usr/bin/dockerd &
[1] 26695
[root@192 /]# INFO[2023-12-11T01:18:51.209522829+08:00] Starting up

[root@192 /]# docker -v
Docker version 23.0.0, build e92dd87
[root@192 /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

看到docker版本号即为安装成功

1.4配置docker开机自启动

打开终端并以管理员身份登录到目标机器。检查系统是否已经安装了 systemd 服务管理器。大多数现代 Linux 发行版都使用 systemd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@192 /]# systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOM

//创建docker.service文件
[root@192 system]# vim /etc/systemd/system/docker.service
//添加以下内容
[Unit]
Description=Docker Service
Wants=network.target
After=network.target

[Service]
ExecStart=/usr/bin/dockerd
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity

[Install]
WantedBy=multi-user.target

保存并关闭docker.service文件,先停止docker服务进程在执行以下操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//执行以下命令启用 Docker 服务:
[root@192 system]# systemctl enable docker.service

//执行以下命令启动 Docker 服务:
[root@192 system]# systemctl start docker.service

//执行以下命令检查 Docker 服务的状态:
[root@192 ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since 一 2023-12-11 02:22:27 CST; 28s ago
Docs: http://docs.docker.com
Main PID: 4166 (dockerd-current)
Tasks: 17
CGroup: /system.slice/docker.service
├─4166 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr... └─4171 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/contai...

二、离线安装image

2.1准备离线安装镜像

先在线环境中准备 Docker 镜像,在可联网的环境中使用 docker pull 命令下载所需的 Docker 镜像。拉取之后可以查看,之后使用docker save -o image.tar image:tag将镜像保存为存为 tar 归档文件,再上传到离线安装的服务器环境中去

1
2
3
4
5
6
7
8
9
10
11
12
[root@iZbp11pk9q75cmizeab62bZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eea7b3dcba7e 3 months ago 187MB
mysql 8.0.31 7484689f290f 12 months ago 538MB
bladex/sentinel-dashboard latest aa398704ebd3 3 years ago 147MB

[root@iZbp11pk9q75cmizeab62bZ ~]# docker save -o mysql_8.0.31.tar mysql:8.0.31
[root@iZbp11pk9q75cmizeab62bZ docker]# ll
总用量 602828
drwxrwxr-x. 2 admin admin 146 2月 2 2023 docker
-rw-r--r--. 1 root root 550466048 12月 11 02:28 mysql_8.0.31.tar
docker save -o image.tar image:tag

2.2 离线拉取镜像

使用docker load -i image.tar将归档文件mysql镜像安装使用docker images验证镜像是否拉取成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@192 docker]# docker load -i /docker/mysql_8.0.31.tar 
d3cc7b6aa7bc: Loading layer [==================================================>] 109.2MB/109.2MB
a7f421510691: Loading layer [==================================================>] 11.26kB/11.26kB
6ac2db160c6c: Loading layer [==================================================>] 2.293MB/2.293MB
7fe65049a2a9: Loading layer [==================================================>] 13.92MB/13.92MB
da1824686db3: Loading layer [==================================================>] 7.168kB/7.168kB
d410d4efd0e7: Loading layer [==================================================>] 3.072kB/3.072kB
60c4dab21dc3: Loading layer [==================================================>] 178.4MB/178.4MB
d00057f89692: Loading layer [==================================================>] 3.072kB/3.072kB
2f42ce9d7b80: Loading layer [==================================================>] 246.5MB/246.5MB
8408fed6a9d6: Loading layer [==================================================>] 17.41kB/17.41kB
336175ddf157: Loading layer [==================================================>] 1.536kB/1.536kB
Loaded image: mysql:8.0.31

[root@192 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.31 7484689f290f 12 months ago 538MB

三、docker-compose安装

3.1下载docker-compose并安装

Docker Compose 是Docker的组装工具,用于创建和调试多个Docker容器,并在同一个Docker主机上运行它们。Docker Compose基于YAML文件,描述多个容器之间的相互关系,以及每个容器所需要的配置和环境变量。

Docker Compose和Docker版本对应关系:https://docs.docker.com/compose/compose-file/compose-file-v3/

Docker Compose下载地址:Releases · docker/compose (github.com)

将下载的docker-compose-linux-x86_64文件上传到离线服务器移动目录改名授权后使用docker-compose --version看到版本号即安装成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@192 docker]# ll
总用量 660820
drwxrwxr-x. 2 admin admin 146 2月 2 2023 docker
-rw-r--r--. 1 root root 66824010 12月 11 01:04 docker-23.0.0.tgz
-rw-r--r--. 1 root root 59383631 12月 11 02:54 docker-compose-linux-x86_64
-rw-r--r--. 1 root root 550466048 12月 11 02:28 mysql_8.0.31.tar

//将docker-compose-linux-x86_64文件移动到/usr/local/bin/目录下并改名
[root@192 docker]# sudo mv /docker/docker-compose-linux-x86_64 /usr/local/bin/docker-compose

//授予执行权限
[root@192 docker]# chmod +x /usr/local/bin/docker-compose

//验证是否成功
[root@192 docker]# docker-compose --version
Docker Compose version v2.20.3

3.2docker-compose启动

对已经拉取的mysql:8.0.31镜像使用docker-compose启动

创建一个名为 docker-compose.yml 的文件,并在其中定义服务配置,使用离线拉取的mysql:8.0.3镜像启动容器,文件内容不做讲解,文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 1 version: '3.0'
2 services:
3 mysql:
4 image: mysql:8.0.31
5 container_name: mysql
6 restart: always
7 ports:
8 - 3306:3306
9 environment:
10 MYSQL_ROOT_PASSWORD: password
11 volumes:
12 - /docker/mysql/data:/var/lib/mysql
13 networks:
14 - mynetwork
15
16 networks:
17 mynetwork:

使用命令docker-compose up -d启动使用docker-compose ps验证,看到容器启动表示成功,进入容器内容执行命令检验

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
[root@192 docker]# docker-compose up -d
[+] Running 2/2
✔ Network docker_mynetwork Created 0.1s
✔ Container mysql Started 0.1s

[root@192 docker]# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
mysql mysql:8.0.31 "docker-entrypoint.s…" mysql 5 minutes ago Up 6 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp
[root@192 docker]# docker-compose exec mysql mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.31 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)

mysql>

用navicat连接工具测试成功


Docker离线安装
https://xiong-hai.github.io/2023/12/10/Docker离线安装/
作者
Xiong-Hai
发布于
2023年12月10日
许可协议