本来是已经准备开始K8S的内容,但是K8S与Docker关联比较大,于是决定先写一些关于Docker的文章
本文所有内容基于CentOS8系统

文章目录

  • 概述
  • 下载二进制文件
  • 下载二进制安装脚本
  • 修改脚本权限
  • 执行安装脚本
  • 修改Docker安装目录
    • 新建Docker目录
    • 修改Docker配置文件
    • 重启Docker
    • 查看DockerInfo
    • 验证

概述

Docker社区版本中提供了MacOS、Windows和Linux等系统的安装包,同时也支持在云服务器上的安装,如AWSCloud。网上在各种系统下安装Docker的教程也比较多,本文中仅介绍在Linux下Docker二进制文件的安装方式。

下载二进制文件

下载地址:Docker二进制文件官方下载地址

选择我们需要的版本下载,这里我选择的是docker-18.06.2-ce.tgz

进入你存放下载文件的文件件,执行以下命令

wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.2-ce.tgz

等待下载完成

--2020-12-03 21:26:22--  https://download.docker.com/linux/static/stable/x86_64/docker-18.06.2-ce.tgz
正在解析主机 download.docker.com (download.docker.com)... 13.225.2.81, 13.225.2.92, 13.225.2.103, ...
正在连接 download.docker.com (download.docker.com)|13.225.2.81|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:43834194 (42M) [application/x-tar]
正在保存至: “docker-18.06.2-ce.tgz”docker-18.06.2-ce.tgz                  100%[============================================================================>]  41.80M  9.29MB/s  用时 6.8s    2020-12-03 21:26:29 (6.17 MB/s) - 已保存 “docker-18.06.2-ce.tgz” [43834194/43834194])

下载二进制安装脚本

地址:Docker二进制安装脚本地址

在刚才的文件夹下创建一个名为install-docker.sh的文件

vim install-docker.sh

将install-docker.sh中的内容复制到我们创建的文件中

#!/bin/shusage(){echo "Usage: $0 FILE_NAME_DOCKER_CE_TAR_GZ"echo "       $0 docker-17.09.0-ce.tgz"echo "Get docker-ce binary from: https://download.docker.com/linux/static/stable/x86_64/"echo "eg: wget https://download.docker.com/linux/static/stable/x86_64/docker-17.09.0-ce.tgz"echo ""
}
SYSTEMDDIR=/usr/lib/systemd/system
SERVICEFILE=docker.service
DOCKERDIR=/usr/bin
DOCKERBIN=docker
SERVICENAME=dockerif [ $# -ne 1 ]; thenusageexit 1
elseFILETARGZ="$1"
fiif [ ! -f ${FILETARGZ} ]; thenecho "Docker binary tgz files does not exist, please check it"echo "Get docker-ce binary from: https://download.docker.com/linux/static/stable/x86_64/"echo "eg: wget https://download.docker.com/linux/static/stable/x86_64/docker-17.09.0-ce.tgz"exit 1
fiecho "##unzip : tar xvpf ${FILETARGZ}"
tar xvpf ${FILETARGZ}
echoecho "##binary : ${DOCKERBIN} copy to ${DOCKERDIR}"
cp -p ${DOCKERBIN}/* ${DOCKERDIR} >/dev/null 2>&1
which ${DOCKERBIN}echo "##systemd service: ${SERVICEFILE}"
echo "##docker.service: create docker systemd file"
cat >${SYSTEMDDIR}/${SERVICEFILE} <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \-H tcp://0.0.0.0:4243 \-H unix:///var/run/docker.sock \--selinux-enabled=false \--log-opt max-size=1g
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=on-failure
[Install]
WantedBy=multi-user.target
EOFecho ""systemctl daemon-reload
echo "##Service status: ${SERVICENAME}"
systemctl status ${SERVICENAME}
echo "##Service restart: ${SERVICENAME}"
systemctl restart ${SERVICENAME}
echo "##Service status: ${SERVICENAME}"
systemctl status ${SERVICENAME}echo "##Service enabled: ${SERVICENAME}"
systemctl enable ${SERVICENAME}echo "## docker version"
docker version

修改脚本权限

执行命令

chmod -x ./install-docker.sh

执行安装脚本

执行命令

bash ./install-docker.sh docker-18.06.2-ce.tgz

脚本会自动安装我们下载的Docker安装包并且重启Docker

##unzip : tar xvpf docker-18.06.2-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##binary : docker copy to /usr/bin
/usr/bin/docker
##systemd service: docker.service
##docker.service: create docker systemd file##Service status: docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: inactive (dead)Docs: http://docs.docker.com
##Service restart: docker
##Service status: docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Thu 2020-12-03 21:42:22 CST; 31ms agoDocs: http://docs.docker.comMain PID: 3164626 (dockerd)Tasks: 18 (limit: 11540)Memory: 22.8MCGroup: /system.slice/docker.service├─3164626 /usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1g└─3164645 docker-containerd --config /var/run/docker/containerd/containerd.toml12月 03 21:42:16 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:16.588103107+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0x>
12月 03 21:42:16 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:16.588258691+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0x>
12月 03 21:42:16 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:16.588274371+08:00" level=info msg="Loading containers: start."
12月 03 21:42:21 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:21.490469755+08:00" level=info msg="Default bridge (docker0) is assigned with an IP>
12月 03 21:42:22 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:22.055802015+08:00" level=info msg="Loading containers: done."
12月 03 21:42:22 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:22.134787833+08:00" level=info msg="Docker daemon" commit=6d37f41 graphdriver(s)=ov>
12月 03 21:42:22 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:22.134924559+08:00" level=info msg="Daemon has completed initialization"
12月 03 21:42:22 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:22.236492421+08:00" level=info msg="API listen on /var/run/docker.sock"
12月 03 21:42:22 VM-0-4-centos dockerd[3164626]: time="2020-12-03T21:42:22.236569607+08:00" level=info msg="API listen on [::]:4243"
12月 03 21:42:22 VM-0-4-centos systemd[1]: Started Docker Application Container Engine.

查看Docker信息

[root@VM-0-4-centos download]# docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 0
Server Version: 18.06.2-ce
Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:Volume: localNetwork: bridge host macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:seccompProfile: default
Kernel Version: 4.18.0-80.el8.x86_64
Operating System: CentOS Linux 8 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.787GiB
Name: VM-0-4-centos
ID: BUHQ:DMTC:UM3Z:FJTX:FYWQ:U55P:MM2H:WT7X:YQFA:LUNL:MBDC:7DXS
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:127.0.0.0/8
Live Restore Enabled: false

修改Docker安装目录

从上文中Docker信息中我们可以看到,Docker的安装目录是

Docker Root Dir: /var/lib/docker

一般情况下,这个目录的的空间较小,所以不建议将其安装在var中。我们现在来修改一下Docker的安装目录

新建Docker目录

mkdir -p /opt/docker/root

修改Docker配置文件

查询Docker配置文件位置

[root@VM-0-4-centos download]# systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

修改docker.service文件,在ExecStart属性的最后面添加参数

--graph /opt/docker/root

重启Docker

重新enable 一下docker 服务 重新进行软连接 以及进行一次 daemon-reload

systemctl disable docker
systemctl enable docker
systemctl daemon-reload
systemctl start docker

查看DockerInfo

[root@VM-0-4-centos ~]# systemctl restart docker
您在 /var/spool/mail/root 中有邮件
[root@VM-0-4-centos ~]# docker info
Containers: 0Running: 0Paused: 0Stopped: 0
Images: 0
Server Version: 18.06.2-ce
Storage Driver: overlay2Backing Filesystem: extfsSupports d_type: trueNative Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:Volume: localNetwork: bridge host macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:seccompProfile: default
Kernel Version: 4.18.0-80.el8.x86_64
Operating System: CentOS Linux 8 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.787GiB
Name: VM-0-4-centos
ID: BUHQ:DMTC:UM3Z:FJTX:FYWQ:U55P:MM2H:WT7X:YQFA:LUNL:MBDC:7DXS
Docker Root Dir: /opt/docker/root
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:127.0.0.0/8
Live Restore Enabled: false

注:若启动后Docker Root Dir未发生变化,请执行以下命令再重新查看info

systemctl restart docker

验证

docker安装MySQL:详细教程链接,建议大家看一看详细教程,里面也有安装docker国内源的内容,可以大大加快你下载镜像的速度

执行拉取MySQL5.7的命令

[root@VM-0-4-centos ~]# docker pull mysql:5.7.29
5.7.29: Pulling from library/mysql
54fec2fa59d0: Pull complete
bcc6c6145912: Pull complete
951c3d959c9d: Pull complete
05de4d0e206e: Pull complete
319f0394ef42: Pull complete
d9185034607b: Pull complete
013a9c64dadc: Pull complete
58b7b840ebff: Pull complete
9b85c0abc43d: Pull complete
bdf022f63e85: Pull complete
35f7f707ce83: Pull complete
Digest: sha256:95b4bc7c1b111906fdb7a39cd990dd99f21c594722735d059769b80312eb57a7
Status: Downloaded newer image for mysql:5.7.29

执行命令

du /var/lib/docker/

与命令

du /opt/docker/root/

可以看到,所有的镜像都存在于文件夹/opt/docker/root/下
我是Baldwin,一个25岁的程序员,致力于让学习变得更有趣!
现在关注作者即可领取海量学习资料与简历模板

往期好文:

用Python每天给女神发一句手机短信情话

MySQL优化之explain

Spring源码分析-MVC初始化

春风得意马蹄疾,一文看尽(JVM)虚拟机

造轮子的艺术

源码阅读技巧

Java注解详解

教你自建SpringBoot服务器

更多文章请点击

Docker从入门到放弃------docker的安装与初始化配置相关推荐

  1. mysql不要放docker,Docker从入门到放弃

    本文将以比较简单的的方式让大家理解docker,以平时常用到的测试环境为主,从用开始,慢慢理解docker. 0x00 用docker进行漏洞测试 0x01 docker运行busybox 0x02 ...

  2. Linux从入门到放弃 docker

    Docker概述 Docker流程 java -- apk -- 发布(应用商店) -- 下载使用apk -- 安装即可用 java -- jar(环境) -- 打包项目带上环境(镜像) -- Doc ...

  3. docker基础入门一:docker安装镜像下载根据镜像创建容器

    一.安装准备: #卸载旧的版本: yum list installed |grep docker yum -y remove  ... #卸载后将保留/var/lib/docker的内容(镜像.容器等 ...

  4. Docker从入门到“放弃”

    文章目录 Docker 概述 虚拟机技术缺点 容器化技术 比较Docker和虚拟机技术的不同 优点 Docker的基本组成 安装Docker 底层原理 **Docker是什么工作的?** **Dock ...

  5. 老男孩Docker基础入门培训视频Docker核心原理解(完整版)

    课程介绍: Dokcer比较初级的培训视频教程,很适合零基础的朋友们来学习,没有复杂的原理,初入门推荐的Docker培训视频 课程目录: L021-01-Docker介绍.avi L021-02-Do ...

  6. Hexo 入门指南(二) - 安装、初始化和配置

    安装和初始化 linux下打开bash,win下面打开cmd,输入: $ npm install hexo -g $ hexo init blog $ cd blog $ npm install $ ...

  7. Centos7 Minimal 安装后 初始化配置

    安装完成后初始化配置 1:更新yum yum upgrade 2: 安装基础命令 #yum -y install vim* lrzsz gcc-c++ pcre pcre-devel zlib zli ...

  8. MYSQL安装和初始化配置

    简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好 ...

  9. Jenkins安装和初始化配置

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 所以安装Jenkins包含安装相应的jdk环境 ...

最新文章

  1. python request post json_python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况...
  2. java 回滚异常_Spring事务管理只对出现运行期异常进行回滚
  3. 计算机研究与发展 杂志,《计算机研究与发展》杂志投稿的具体要求详解
  4. Matplotlib 中文用户指南 1 简介
  5. 两个整数集合的交集 ———— 腾讯2014软件开发笔试题目
  6. c++工作笔记002---C++ 类成员访问运算符 - 的重载
  7. 181202每日一句
  8. P问题、NP问题、NPC问题、NP hard问题
  9. 反向传播思想及其优缺点
  10. 关于椰子汁的学问,你知道多少?
  11. 电荷耦合器件架构及工作原理
  12. Linxu-解压压缩命令
  13. 如何让电脑同时连接内外网?
  14. Python-random函数用法
  15. 【干货篇】调用其他系统http接口超时了,如何处理,方案汇总
  16. Linux查看网卡的运行情况,NETSTAT - 查看网络运行情况。
  17. 漫画 | 领导说“辛苦了”,该怎么回?
  18. proteus如何添加stm32_电路仿真软件详谈(六),Proteus电路仿真软件的超级应用
  19. SQL 开源替代品,诞生了!
  20. 给网页的按钮添加快捷键

热门文章

  1. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换
  2. PyTorch(Python)训练MNIST模型移动端IOS上使用Swift实时数字识别
  3. 软件测试基础——概念篇
  4. 阿里云ACP认证适合什么样的人考?
  5. 【App Inventor】飞机大战 APP
  6. 后渗透篇:CLSID大全
  7. poker游戏编码规则
  8. RecyclerView+自定义IndexBar实现自定义带索引的通讯录
  9. 计算机应用知识试题 上学吧,自考计算机应用高分技巧,自考计算机应用作答技巧...
  10. iphoneX布局适配及iOS 11.0系统适配