云原生应用2:docker在线/离线安装与基础用法

系统管理员 2024-04-17 14:37 130阅读 0赞

本篇博客能让你了解到docker的安装与基础语法
什么是 Docker?
Docker 是一个开源的应用容器引擎,是一种资源虚拟化技术,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。虚拟化技术演历路径可分为三个时代:

  • a.物理机时代,多个应用程序可能跑在一台物理机器上
  • b.虚拟机时代,一台物理机器启动多个虚拟机实例,一个虚拟机跑多个应用程序
  • c.容器化时代,一台物理机上启动多个容器实例,一个容器跑多个应用程序

Docker 的构成
Docker 由镜像、镜像仓库、容器三个部分组成

镜像: 跨平台、可移植的程序+环境包
镜像仓库: 镜像的存储位置,有云端仓库和本地仓库之分,官方镜像仓库地址(https://hub.docker.com/)
容器: 进行了资源隔离的镜像运行时环境

1.docker安装与基础用法

依赖环境:Linux kernel 3.10+
下面使用 Centos7.6演示:查看内核与系统版本:uname -a ,cat /etc/centos-release
在这里插入图片描述

2.安装docker
  • 1.在阿里云开源镜像仓库找到docker-ce库,https://mirrors.aliyun.com/docker-ce/linux/centos/ ,找到 docker-ce.repo ,并右键复制链接地址,在centos上 cd /etc/yum.repos.d/ , wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 2.执行yum repolist,再安装docker-ce,yum install docker-ce,中间步骤输入 y 同意
    如果出现 container-selinux >= 2.9问题无法安装,请先下载 container-selinux
    下载:wget http://mirror.centos.org/centos/7/extras/x86\_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
    安装:rpm -ivh container-selinux-2.107-3.el7.noarch.rpm
  • 3.设置docker镜像加速器,dockerhub在国外,因此docker镜像的下载很慢,需要设置加速地址,有很多第三方镜像加速地址,如:阿里云镜像加速器、163、docker-cn等,设置加速器:1.mkdir -p /etc/docker , 2.vi /etc/docker/daemon.json , 3.输入 {“registry-mirrors” : [“https://xxx.mirror.aliyuncs.com”,“https://registry.docker-cn.com”\]\} 里面是数组,可以输入多个
  • 4.启动docker,systemctl start docker.service ,开机启动,systemctl enable docker.service
  • 5.查看docker版本,docker version , docker info,可看到运行中的容器,docker 版本,以及刚刚设置的镜像加速器地址,可看到机器上有一个已停止的容器
    在这里插入图片描述
3.docker基础用法

帮助文档可让你快速了解它,输入docker,或 docker image —help 查看帮助文档
安装一个nginx来快速了解docker的使用,以 nginx 为例进行说明:

  • 1.查询镜像,有2种方式,一是使用 docker search nginx 命令查询,二是在https://hub.docker.com/ 页面上输入nginx查询
  • 2.下载镜像:docker pull nginx:latest,或指定标签版本 tag
  • 3.查看镜像列表:docker image ls
  • 4.启动容器:docker run -it -d —name nginx1 -p 8080:80 nginx:latest,运行一个有交互窗口的容器,名称叫nginx1,且容器的80端口映射宿主机的8080端口,启动后可通过 http://宿主机IP:8080 访问nginx
  • 5.查看容器:docker ps ,docker ps -a(可查看已停止的容器)
  • 6.停止容器:docker stop nginx1
  • 7.删除容器:docker rm nginx1,再通过docker ps -a 就看不到停止的容器了
  • 8.查看容器详细信息:docker inspect nginx1
  • 9.查看容器中日志信息:docker container logs nginx1

上面命令截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问刚刚运行的 nginx 容器
在这里插入图片描述
docker运行状态图:
在这里插入图片描述

阿里云镜像加速器,需要先注册,然后在 容器镜像服务–镜像加速器中查看,如下图:
在这里插入图片描述

下一篇:云原生应用3:docker镜像管理

配置一个 jenkins 容器:vi start_jenkins.sh,内容如下:

docker run -d —name jenkins -u root -it —restart=always
-p 7080:8080 -p 50000:50000
-p 8190:8190
-p 8191:8191
–privileged=true
-v /var/jenkins_home:/var/jenkins_home
-v /home:/home
-v /usr/bin/docker:/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone
jenkinsci/blueocean

-v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone 这行特别重要,表示容器的时间使用宿主机的时间,否则你应用内容的时间会少8个小时

docker也可以离线安装
离线包下载地址tg:https://download.docker.com/linux/static/stable/x86_64/
离线包下载地址rpm:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

上传文件,解压

[root@dev1 opt]# tar -xvf docker-18.06.1-ce.tgz
docker/
docker/docker-containerd
docker/docker-proxy
docker/docker
docker/docker-runc
docker/dockerd
docker/docker-containerd-ctr
docker/docker-containerd-shim
docker/docker-init

复制 [root@dev1 opt] cp docker/* /usr/bin/
设置开机自启动,vim /etc/systemd/system/docker.service ,内容如下:

  1. [Unit]
  2. Description=Docker Application Container Engine
  3. Documentation=https://docs.docker.com
  4. After=network-online.target firewalld.service
  5. Wants=network-online.target
  6. [Service]
  7. Type=notify
  8. # the default is not to use systemd for cgroups because the delegate issues still
  9. # exists and systemd currently does not support the cgroup feature set required
  10. # for containers run by docker
  11. ExecStart=/usr/bin/dockerd
  12. ExecReload=/bin/kill -s HUP $MAINPID
  13. # Having non-zero Limit*s causes performance problems due to accounting overhead
  14. # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity
  15. LimitNPROC=infinity
  16. LimitCORE=infinity
  17. # Uncomment TasksMax if your systemd version supports it.
  18. # Only systemd 226 and above support this version.
  19. #TasksMax=infinity
  20. TimeoutStartSec=0
  21. # set delegate yes so that systemd does not reset the cgroups of docker containers
  22. Delegate=yes
  23. # kill only the docker process, not all processes in the cgroup
  24. KillMode=process
  25. # restart the docker process if it exits prematurely
  26. Restart=on-failure
  27. StartLimitBurst=3
  28. StartLimitInterval=60s
  29. [Install]
  30. WantedBy=multi-user.target

添加文件权限并启动docker:chmod 777 -R /etc/systemd/system/docker.service
重载unit配置文件:systemctl daemon-reload
启动Docker(2种方式): systemctl start docker / dockerd &
设置开机自启:systemctl enable docker.service
关闭selinux:vi /etc/selinux/config ,修改 SELINUX=disabled 重新启动系统即可
修改iptables

  1. vi /etc/sysctl.conf
  2. 添加以下内容
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. 刷新配置:sysctl -p

测试
[root@centos75-1 ~]# docker info

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读

    相关 原生1:容器基础入门

    篇博客能让你了解到什么是云原生技术,以前是通过主机虚拟化来进行隔离的,以及容器虚拟化和容器编排技术发展史 1.什么是云原生? 云原生既包含技术(微服务,敏捷基础设...