安装docker+docker远程连接

docker

Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤"沙盒"机制,容器之间不会存在任何接⼝。

docker架构

docker核心概念

  1. 镜像(images):⼀个⾯向 docker 容器引擎的只读模板,也是容器的基础,类似于 iso 镜像⽂件。
  2. 容器(container):基于镜像所创建的虚拟实例,相当于⼀个简易的 Linux 环境,可启停,且多个容器之间互相隔离。
  3. 仓库(Repository):集中存放 docker 镜像的位置,可使⽤docker pull 或 push 命令下载或上传到私有或公有仓库。
  4. 仓库注册服务器(registry):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库 docker hub。

安装docker

配置docker环境

root@docker \~# cat <<EOF | tee /etc/modules-load.d/k8s.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter

overlay:是⼀种⽂件系统层叠技术,常⽤于容器化平台(⽐如 Docker)中。
br_netfilter:Linux 内核中的⼀个模块,它提供了桥接设备(bridge device) 和⽹络过滤器(netfilter) 之间的集成。

root@docker \~# modprobe overlay //加载overlay内核模块
root@docker \~# modprobe br_netfilter //加载br_netfilter内核模块
root@docker \~# cat /etc/modules-load.d/k8s.conf
overlay
br_netfilter
root@docker \~# cat << EOF | tee /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-iptables = 1
> net.bridge.bridge-nf-call-ip6tables = 1
> net.ipv4.ip_forward = 1
> EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
root@docker \~# sysctl --system

device-mapper-persistent-data:⼀个Linux内核模块,它为Device Mapper设备提供持久存储功能
lvm2:Linux系统下的逻辑卷管理⼯具

root@docker \~# yum install -y yum-utils device-mapper-persistent-data lvm2

添加阿里云yum源:配置一个仓库

root@docker \~# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

root@docker \~# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

启动关闭服务:

root@docker \~# systemctl start|stop|restart docker.service

查看镜像:
root@docker \~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

配置docker镜像站:

root@docker \~# vim /etc/docker/daemon.json

{
"registry-mirrors": "https://do.nark.eu.org", "https://dc.j8.work", "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn"
}

root@docker \~# systemctl restart docker

下载镜像:

root@docker \~# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

root@docker \~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 2 years ago 231MB

运行容器

root@docker \~# docker run -i -t --name=c0 centos:latest /bin/bash
root@b9d46da21fe3 /#

在容器中获取阿里云镜像:

root@b9d46da21fe3 \~# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
root@b9d46da21fe3 \~# yum clean all
root@b9d46da21fe3 \~# yum makecache
安装http:

root@b9d46da21fe3 \~# yum -y install httpd

root@b9d46da21fe3 \~# yum -y install net-tools

修改index文件:

root@b9d46da21fe3 \~# echo 'docker_httpd_derver' > /var/www/html/index.html

使用systemctl无法启动httpd,因为容器也就200MB,使用httpd -k start 来启动

root@b9d46da21fe3 \~# systemctl start httpd
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
root@b9d46da21fe3 \~# httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

访问:

root@b9d46da21fe3 \~# curl localhost
docker_httpd_derver
只要还没退出容器(退出就没有服务了),宿主机上也可以访问,但在物理机上不能访问

root@docker \~# curl http://172.17.0.2
docker_httpd_derver
退出容器:

root@b9d46da21fe3 \~# exit
exit

再次启动:
root@docker \~# docker start c0
c0
接入到管理界面,将容器的命令行附加到当前的终端,把c0挂载到当前终端上
root@docker \~# docker attach c0
root@b9d46da21fe3 /#

总结:

第一次创建容器

docker run -it --name=c0 centos:latest /bin/bash

配置阿里云的yum仓库

yum clean all && yum makecache

yum -y install httpd

echo 'docker_httpd_server' > /var/www/html/index.html

不能用systemctl start httpd启动服务,因为容器也就200MB

使用 httpd -k start 来启动

在宿主机上访问可以,无法在物理机上访问,也无法ping到这个主机

如果没有指令正在执行,容器就会停止 exit

重新启动容器 docker start c0

将c0的终端附加到当前的终端 docker attach c0

此时,httpd服务又停了

期望退出,服务继续运行,一致按住ctrl,先按p,再按q

docker远程连接

docker可以远程连接,但必须要有sock文件

方法

1.查看状态

查看sock套接字:ls -lh /var/run/docker.sock

要允许远程连接,需要有一个服务,使用端口体现: netstat -lnput | grep 2375

2.设置允许远程管理

停用docker服务

修改/usr/lib/systemd/system/docker.service

修改daemon.json

3.加载daemon.json

systemctl daemon-reload

4.启动服务

systemctl start docker.service

5.查看状态

查看sock套接字:ls -lh /var/run/docker.sock

要允许远程连接,需要有一个服务,使用端口体现: netstat -lnput | grep 2375

6.远程连接

docker -Hip地址 -it -name...

具体步骤

docker的套接字文件,即使docker是关闭的,sock也在,但这个套接字文件不正确,我们需要修改一些配置

root@docker \~# ls -lh /var/run/

srw-rw----. 1 root docker 0 8月 22 11:22 docker.sock
root@docker \~# vim /etc/docker/daemon.json


root@docker \~# systemctl start docker
root@docker \~# netstat -lnput | grep 2375

root@docker \~# ls -lh /var/run/

srw-rw----. 1 root docker 0 8月 22 11:22 docker.sock

root@docker \~# vim /usr/lib/systemd/system/docker.service

把13行dockerd后面的内容删掉:


root@docker \~# systemctl stop docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Warning: Stopping docker.service, but it can still be activated by:
docker.socket

启动失败,需要加载daemon.json:
root@docker \~# systemctl start docker.service
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

加载daemon.json:

root@docker \~# systemctl daemon-reload
root@docker \~# systemctl start docker.service
root@docker \~# netstat -lnput | grep 2375
tcp6 0 0 :::2375 :::* LISTEN 6831/dockerd
root@docker \~# ls -lh /var/run/
srw-rw----. 1 root docker 0 8月 22 16:10 docker.sock

远程连接:

root@docker \~# docker -H 192.168.118.55 images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 2 years ago 231MB

相关推荐
无限的鲜花2 小时前
反射(原创推荐)
java·开发语言
IT二叔3 小时前
Java项目部署-03-teamcity-cicd-docker镜像流水线方式部署
java·ci/cd·持续部署
yongche_shi3 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he3 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
超级数据查看器3 小时前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
AI行业学习4 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
折哥的程序人生 · 物流技术专研5 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai5 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
大圣编程5 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
硕风和炜5 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集