在生产环境中,服务器一般是在内网环境下,所以这里记录离线安装docker以及本地docker镜像制作和加载。
一.下载docekr安装包
https://download.docker.com/linux/static/stable/
#通过uanme -m查看服务器架构
[root@localhost ~]# uname -m
x86_64
#选择x86_64目录下对应的版本
https://download.docker.com/linux/static/stable/x86_64/docker-27.5.0.tgz
二.安装docker
1.上传docker压缩包到服务器并解压
[root@localhost opt]# ls
docker-27.5.0.tgz
[root@localhost opt]# tar -zxvf docker-27.5.0.tgz
docker/
docker/runc
docker/containerd
docker/docker-init
docker/dockerd
docker/containerd-shim-runc-v2
docker/docker-proxy
docker/docker
docker/ctr
[root@localhost opt]# ls
docker docker-27.5.0.tgz
2.将docker可执行文件移动到环境变量路径
# 通过该命令可以看到当前的环境变量
[root@localhost opt]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
# 将非系统自带的可执行文件放到/usr/local/bin/目录下
[root@localhost opt]# mv docker/* /usr/local/bin/
3.使用systemd管理docker服务
创建服务文件docker.service
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network.target
[Service]
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=512
TimeoutSec=0
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
EOF
# 重新加载服务配置文件
systemctl daemon-reload
# 启动docker服务
systemctl start docker
# 开机自启docker服务
systemctl enable docker
三、安装docker compose
1.下载地址
https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64
2.上传到服务器
[root@localhost opt]# ls docker-compose-linux-x86_64
docker-compose-linux-x86_64
3.移动到docker插件目录下
[root@localhost opt]# mkdir -p /usr/local/lib/docker/cli-plugins/
[root@localhost opt]# chmod +x docker-compose-linux-x86_64
[root@localhost opt]# mv docker-compose-linux-x86_64 /usr/local/lib/docker/cli-plugins/docker-compose
4.验证
[root@localhost opt]# docker compose version
Docker Compose version v2.32.4
四、镜像的导入和导出
1.从能联网的机器拉取需要的镜像
#我这里拉取了nginx:1.27
[root@localhost ~]# docker pull nginx:1.27
1.27: Pulling from library/nginx
af302e5c37e9: Pull complete
207b812743af: Pull complete
841e383b441e: Pull complete
0256c04a8d84: Pull complete
38e992d287c5: Pull complete
9e9aab598f58: Pull complete
4de87b37f4ad: Pull complete
Digest: sha256:0a399eb16751829e1af26fea27b20c3ec28d7ab1fb72182879dcae1cca21206a
Status: Downloaded newer image for nginx:1.27
docker.io/library/nginx:1.27
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.27 9bea9f2796e2 8 weeks ago 192MB
2.导出镜像
#将nginx:1.27导出到本地,名称为nginx:1.27:tar
[root@localhost ~]# docker save -o nginx:1.27.tar nginx:1.27
[root@localhost ~]# ls
anaconda-ks.cfg nginx:1.27.tar
3.上传镜像到不能联网的docker服务器并导入镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@localhost ~]# ls
anaconda-ks.cfg nginx:1.27.tar
#导入nginx:1.27镜像
[root@localhost ~]# docker load -i nginx\:1.27.tar
f5fe472da253: Loading layer [==================================================>] 77.83MB/77.83MB
88ebb510d2fb: Loading layer [==================================================>] 118MB/118MB
943132143199: Loading layer [==================================================>] 3.584kB/3.584kB
32c977818204: Loading layer [==================================================>] 4.608kB/4.608kB
541cf9cf006d: Loading layer [==================================================>] 2.56kB/2.56kB
58045dd06e5b: Loading layer [==================================================>] 5.12kB/5.12kB
b57b5eac2941: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: nginx:1.27
#查看
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.27 9bea9f2796e2 8 weeks ago 192MB
4.运行nginx容器测试
#运行nginx容器
[root@localhost ~]# docker run --name nginx -p 80:80 -d nginx:1.27
e5fabdea277c467e910a767d4f295cec4c19b5b6fda52a7b336d7e7c8c2f8a32
#查看当前运行的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5fabdea277c nginx:1.27 "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
#访问测试
[root@localhost ~]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.27.3
Date: Wed, 22 Jan 2025 07:06:14 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 26 Nov 2024 15:55:00 GMT
Connection: keep-alive
ETag: "6745ef54-267"
Accept-Ranges: bytes
评论区