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

本篇博客能让你了解到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
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce (最新版本)
# Step 4: 开启Docker服务
sudo service docker start

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
docker-ce.x86_64            3:24.0.2-1.el7                      docker-ce-stable
docker-ce.x86_64            3:19.03.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的 24.0.2-1.el7 | 19.03.9-3.el7 | 17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
  • 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://mirrors.aliyun.com/docker-ce/linux/static/stable/x86_64/docker-19.03.9.tgz

上传文件,解压

[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 ,内容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值