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

1.1 下载docker离线安装包

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

[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执行文件目录下并赋予执行权限

[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并验证是否安装成功

[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

[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服务进程在执行以下操作

//执行以下命令启用 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 归档文件,再上传到离线安装的服务器环境中去

[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验证镜像是否拉取成功

[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看到版本号即安装成功

[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 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验证,看到容器启动表示成功,进入容器内容执行命令检验

[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-mysql.png