posts - 33,  comments - 0,  views - 36256

部署安装docker-ce社区版

1.安装阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.安装依赖包和一些小工具
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel

3.关闭防护墙
systemctl stop firewalld
systemctl disable firewalld

4.关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

##关闭swap
swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久


5.uname -r 查看内核必须是3.1版本以上

6.修改内核参数,开启内核转发功能

cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward=1
EOF

重新加载配置
sysctl -p /etc/sysctl.d/docker.conf

报错
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory

先执行modprobe br_netfilter

在重新加载内核配置
sysctl -p /etc/sysctl.d/docker.conf


7.安装Docker-CE社区版
下载docker-ce对应的源

curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

重新加载yum缓存
 yum clean all && yum makecache
 
 安装docker-ce社区20版本
 yum install docker-ce-20.10.6 -y
 
 
8.添加源加速器
mkdir -p /etc/docker
touch /etc/docker/daemon.json
vi  /etc/docker/daemon.json


{
 "registry-mirrors" : [
 "https://8xpk5wnt.mirror.aliyuncs.com"
 ]
}



9.加载配置启动docker

systemctl daemon-reload
systemctl enable docker 
systemctl restart docker

10.查看是否安装完成
# docker version

显示:如下表示成功ץ
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:41 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:43:57 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  
11.检查内核和是否安装了存储驱动
  uname -r
   ls -l /sys/class/misc/device-mapper/  查看存储驱动
   yum install device-mapper -y  安装存储驱动
   modprobe dm-mod  加载存储驱动模块
   
12 时间同步
yum install ntpdate -y
ntpdate ntp.aliyun.com

   
13.docker容器的三大要素 :镜像  容器  仓库
   docker镜像是不包含内核的就只是一个发型版本

docker镜像常用命令

镜像常用命令:
查找命令 docker  search   镜像名/ID
下载命令:docker  pull   镜像名/ID   (docker /var/lib/docker中  通过docker info | grep "Docker Root Dir" 可以查看)
推送命令:docker  push   镜像名/ID
删除镜像:docker  rmi   镜像名/ID
删除所有镜像: docker rmi `docker images -aq`
本地导入镜像:(①docker load --input tomcat.tar    #使用input导入  ②docker load < tomcat.tar       #使用重定向导入)
导出到本地镜像:docker  save  -o    本地镜像名称(默认是tar)   镜像
改镜像名称:docker   tag  镜像ID    名称

docker容器常用命令

容器常用命令:
生成创建一个容器:docker  run   -t  -d   -p 宿主机端口:容器端口  --name=起的容器名    镜像  (备注:8080是物理机端口)
容器多端口映射:docker  run   -t  -d   -p 8080:80  -p 443:443 --name=起的容器名    镜像 
进入容器方法1:docekr  exec  -it 容器名/ID  /bin/bash
进入容器方法2:docker attach 容器ID(生:产环境禁用)
启动容器:docker start  容器/ID
重启容器:docker restart  容器/ID
关闭容器:docker stop 容器/ID
查看所有容器:docker  ps  -a
查看运行中容器:docker ps   (docker container ls)
删除容器:docker rm  容器名/ID     (加  -f  docker rm  -f  容器名/ID  强制删除)
删除所有容器:docker rm `docker ps -aq`
退出容器:exit
查看容器进程信息:docker  top  容器名/ID
容器CPU IO 内存等资源使用情况:docker  stats  容器名/ID
查看容器详情:docker inspect  容器ID  
查看容器日志:docker logs 容器名/ID
导出容器:docker export  容器名/ID  > 容器名.tar
导入容器会变成镜像:docker import nginx02.tar    test/nginx02:v1.0(docker images查看)

获取容器IP: docker inspect --format {{.NetworkSettings.IPAddress}} 容器/ID


docker run -d --name=容器名  --restart=always   镜像  bash  (注释:--restart=always表示挂了就启动)

dockerfile

dockerfile是用于构建镜像

dockerfile指令:
FROM  指定基础镜像(例如:FROM centos \ FROM  debian 等等)
MAINTAINER 指定作者信息(例如:MAINTAINER "duanqk"RUN   想干什么(例如: RUN yum install -y nginx )
ADD    拷贝宿主机文件到容器内,并自动解压 (例如:ADD index.html.tar.gz /var/www/html/index.html)
COPY   拷贝宿主机文件到容器内(例如:ADD index.html /var/www/html/index.html)
WORKDIR  就是cd命令(设置当期目录)
volume    设置卷,挂载主机目录的(volume /date 将容器内的/data文件夹。容器运行时该目录自动挂载,目录中写入数据操作,不会被容器记录为匿名挂载卷)
EXPOSE   指定对外端口   80(帮助使用该镜像的人理解对外提供服务的端口)
CMD    容器启动后干什么事 (例如 :CMD ["/bin/bash"])

cat /etc/os-release  等同  CMD ["cat","/etc/os-release"]

容器中启动程序都是在前台运行  CMD systemctl start nginx 是错误的
正确启动容器命令 CMD ["nginx","-g","daemon off;"]


ENTRYPOINT与CMD区别以及用法
1.作用和CMD一样,都是在指定容器启动程序以及参数
2.当指定了entrypoint后,CMD指令的语义就有了变化。而是把CMD的内容当做参数传递给entrypoint

ENTRYPOINT ["nginx","-g","daemon off;"]

ENV  设置环境变量的(例如:ENV  name="dqk") 无论容器运行或者构建时,变量都可以用
ARG   设置环境变量 (镜像构建时可以用,容器运行时消失)

创建镜像:
docker build -t 'centos-httpd:v1'   . (注意 .)

 -t: 镜像的名字及标签,通常 name:tag 或者 name 格式
 
 --no-cache不采用之前缓存构建
docker build -t --no-cache 'centos-httpd:v1'   . (注意 .)

改下镜像名称:docker   tag  镜像ID    名称

查看详情:docker inspect  容器ID  

docker构建私人镜像仓库

一、搭建本地私有仓库
1.1 首先下载registry镜像

docker pull registry

1.2 在daemon.json文件中添加私有镜像仓库地址
vim /etc/ docker/daemon.json
{
"insecure-registries": ["192.168.224.131:5000"],
#添加,注意用逗号结尾
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}

systemctl restart docker.service


1.3 运行registry容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
===================================================
-itd: 在容器中打开一个伪终端进行交互操作,并在后台运行
-v: 把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的
持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always: 这是重启的策略,在容器退出时总是重启容器
--name registry: 创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像
====================================================
Docker容器的重启策略如下:
no:默认策略,在容器退出时不重启容器
on-failure: 在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 :在容器非正常退出时重启容器,最多重启3次
always: 在容器退出时总是重启容器
unless-stopped: 在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

1.4查看私有镜像仓库是否启动
docker  ps

1.5 查看本地有哪些镜像,为镜像打标签
docker images
举例打标签:docker  tag  nginx:1.16   192.168.224.131:5000/nginx:1.16

1.6上传到私有仓库
docker  images查看
推送到私有仓库
docker push 192.168.224.131:5000/nginx

1.7查看私有仓库镜像
curl http://192.168.224.131:5000/v2/_catalog

{"repositories":["busybox","exechealthz-amd64","kube-dnsmasq-amd64","kubedns-amd64","mysql","nginx","tomcat"]}

参考51cto的博客:https://blog.51cto.com/u_15127632/4330542
posted on   凡是过往皆为序章  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示