安装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 \<\ 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 ![](https://i-blog.csdnimg.cn/direct/8bb1171d9c1a431f99b6bc8151badc6c.png) \[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后面的内容删掉: ![](https://i-blog.csdnimg.cn/direct/e28caf35e5f24030920d27a0925ced40.png) \[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

相关推荐
charlie11451419112 分钟前
如何使用Qt创建一个浮在MainWindow上的滑动小Panel
开发语言·c++·qt·界面设计
Dcs16 分钟前
VSCode等多款主流 IDE 爆出安全漏洞!插件“伪装认证”可执行恶意命令!
java
神仙别闹20 分钟前
基于Python实现LSTM对股票走势的预测
开发语言·python·lstm
保持学习ing22 分钟前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
京东云开发者33 分钟前
Java的SPI机制详解
java
超级小忍1 小时前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
程序无bug1 小时前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享1 小时前
Java Lombok 入门
java
程序无bug1 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队1 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端