安装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

相关推荐
风象南11 分钟前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio9 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室14 小时前
java日常开发笔记和开发问题记录
java
咖啡教室14 小时前
java练习项目记录笔记
java
鱼樱前端15 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea15 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea15 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
我不会编程55517 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
李少兄17 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http