环境
  docker-ce-19.03.1-3.el7.x86_64

一、Docker的部署安装
Docker采用Linux(内核)技术,所以只能运行在Linux上,官方说Linux kernel至少3.8以上。

(1)检查版本
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。

使用命令查看内核版本:uname -r

[root@node105 ~]# uname -r
3.10.-.el7.x86_64

(2)安装辅助工具:

[root@node105 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

yum-utils:管理repository及扩展包的工具 (主要是针对repository);

device-mapper-persistent-data:Device Mapper支持Linux上的许多高级卷管理技术;
lvm2:逻辑卷管理工具;

(3)添加软件源信息,这里使用Docker CE版本。
从2017年3月开始docker在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。

[root@node105 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

[root@node105 ~]# yum makecache fast

(4)移除旧的版本

[root@node105 ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

(5)安装docker-ce

[root@node105 ~]# yum -y install docker-ce

另:使用脚本安装 Docker

(5.1)确保 yum 包更新到最新

[root@node105 ~]# yum update

(5.2)获取Docker安装脚本

[root@node105 ~]# curl -fsSL https://get.docker.com -o get-docker.sh

(5.3)执行Docker安装脚本

[root@node105 ~]# sh get-docker.sh

执行这个脚本会添加 docker.repo 源并安装 Docker。

(6)启动

[root@node105 ~]# systemctl start docker

或者

#服务方式启动
[root@node105 log]# service docker start
Redirecting to /bin/systemctl start docker.service
#设置开机启动
[root@node105 log]# chkconfig docker on
Note: Forwarding request to 'systemctl enable docker.service'.
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node105 log]#

(7)测试运行 hello-world

由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行.

[root@node105 docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Downloaded newer image for hello-world:latest Hello from Docker!
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
. The Docker client contacted the Docker daemon.
. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/ For more examples and ideas, visit:
https://docs.docker.com/get-started/

(8)卸载Docker CE

[root@node105 ~]# yum remove docker-ce

[root@node105 ~]# rm -rf /var/lib/docker

(9)镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决。
比如网易的镜像地址:http://hub-mirror.c.163.com
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

[root@node105 docker]# tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["http://hub-mirror.c.163.com"]
> }
> EOF
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
} [root@node105 docker]# systemctl daemon-reload
[root@node105 docker]# systemctl restart docker

二、Docker配置文件与日志

1、OPTIONS 参数
docker V1.11之前配置文件位于/etc/sysconfig/docker,之后以systemd方式管理docker,默认没有创建配置文件,需要自己创建/etc/systemd/system/docker.service.d/docker.conf

用过命令行参数,指定配置,也可以将这些命令行参数放到docker.conf里的ExecStart后面,还可以使用配置文件daemon.json
(1)命令行

sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

(2)docker.conf

[Service]
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY

(3)daemon.json

{
"api-cors-header": "",
"authorization-plugins": [ ],
"bip": "",
"bridge": "",
"cgroup-parent": "",
"cluster-store": "",
"cluster-store-opts": { },
"cluster-advertise": "",
"debug": true, # 启用debug的模式,启用后,可以看到很多的启动信息,默认false
"default-gateway": "",
"default-gateway-v6": "",
"default-runtime": "runc",
"default-ulimits": { },
"disable-legacy-registry": false,
"dns": ["192.168.1.1"], # 设定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看
"dns-opts": [ ], # 容器 /etc/resolv.conf 文件,其他设置
"dns-search": [ ], # 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的 主机时,DNS不仅搜索host,还会搜索host.example.com 。 注意:如果不设置, Docker 会默认用主机上的 /etc/resolv.conf 来配置容器
"exec-opts": [ ],
"exec-root": "",
"fixed-cidr": "",
"fixed-cidr-v6": "",
"graph": "/var/lib/docker", # 已废弃,使用data-root代替,这个主要看docker的版本
"data-root": "/var/lib/docker", # Docker运行时使用的根路径,默认/var/lib/docker
"group": "", # Unix套接字的属组,仅指/var/run/docker.sock
"hosts": [ ], # 设置容器hosts
"icc": false,
"insecure-registries": [ ], # 配置docker的私库地址
"ip": "0.0.0.0",
"iptables": false,
"ipv6": false,
"ip-forward": false, # 默认true, 启用 net.ipv4.ip_forward ,进入容器后使用 sysctl -a | grepnet.ipv4.ip_forward 查看
"ip-masq": false,
"labels": ["nodeName=node-121"], # docker主机的标签,很实用的功能,例如定义:–label nodeName=host-
"live-restore": true,
"log-driver": "",
"log-level": "",
"log-opts": { },
"max-concurrent-downloads": ,
"max-concurrent-uploads": ,
"mtu": ,
"oom-score-adjust": -,
"pidfile": "", # Docker守护进程的PID文件
"raw-logs": false,
"registry-mirrors": ["xxxx"], # 镜像加速的地址,增加后在 docker info中可查看
"runtimes": {
"runc": {
"path": "runc"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"--debug"
]
}
},
"selinux-enabled": false, # 默认 false,启用selinux支持
"storage-driver": "",
"storage-opts": [ ],
"swarm-default-advertise-addr": "",
"tls": true, # 默认false, 启动TLS认证开关
"tlscacert": "", # 默认~/.docker/ca.pem,通过CA认证过的的certificate文件路径
"tlscert": "", # 默认~/.docker/cert.pem,TLS的certificate文件路径
"tlskey": "", # 默认~/.docker/key.pem,TLS的key文件路径
"tlsverify": true, # 默认false,使用TLS并做后台进程与客户端通讯的验证
"userland-proxy": false,
"userns-remap": ""
}

OPTIONS官方文档

2、日志文件:
/var/log/message

三、Docker基础命令讲解

1、info、version
docker info : 显示 Docker 系统信息,包括镜像和容器数。
docker version :显示 Docker 版本信息

2、容器生命周期管理
run:创建一个新的容器并运行一个命令
start/stop/restart:启动/停止/重启容器
kill:杀掉一个运行中的容器
rm:删除容器。
pause/unpause:暂停/恢复容器中所有的进程。
create:创建一个新的容器但不启动它;
exec:在运行的容器中执行命令

3、容器操作
ps:列出容器
inspect:获取容器/镜像的元数据
top:查看容器中运行的进程信息,支持ps命令参数。
attach:连接到正在运行中的容器
events:从服务器获取实时事件
logs:获取容器的日志
wait:阻塞运行直到容器停止,然后打印出它的退出代码。
export:将文件系统作为一个tar归档文件导出到STDOUT。
port:列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。

4、容器rootfs命令
commit:从容器创建一个新的镜像。
cp:用于容器与主机之间的数据拷贝。
diff:检查容器里文件结构的更改。

5、镜像仓库
login/logout:登陆到/出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
pull:从镜像仓库中拉取或者更新指定镜像;
push:将本地的镜像上传到镜像仓库,要先登陆到镜像仓库;
search:从Docker Hub查找镜像;

6、本地镜像管理
images:列出本地镜像。
rmi:删除本地一个或多少镜像。
tag:标记本地镜像,将其归入某一仓库
build:命令用于使用 Dockerfile 创建镜像
history:查看指定镜像的创建历史。
save:将指定镜像保存成 tar 归档文件。
load:导入使用 docker save 命令导出的镜像。
import:从归档文件中创建镜像。

参考:
CentOS Docker 安装
Windows Docker 安装
Docker 命令大全
Docker 资源汇总

【Docker学习之二】Docker部署安装的更多相关文章

  1. Docker学习总结(二)--Docker安装与启动

    注:笔者使用的环境为 CentOS 7.6,如果版本不一致可能会出现一些错误. 安装 Docker 1)将 yum 包更新到最新版本 sudo yum update 2) 安装需要的软件包 sudo ...

  2. Docker学习笔记二(linux下安装Docker)

    Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...

  3. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

  4. Docker学习(二): 镜像的使用与构建

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  5. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

  6. docker学习笔记一:基本安装和设置容器静态ip

    docker是一个lxc升级版的容器类虚拟环境,具有快速部署,灵活,易迁移的虚拟机模式,现在各大公司已经开始广泛使用为了自己方便学习linux,需要多台虚拟机环境,但是vmware开启多台虚拟机时需要 ...

  7. Docker入门(二):安装/卸载

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  8. docker 学习之一:docker 安装

    核心概念1. 镜像是一个只读的模板类似于安装系统用到的那个iso文件我们通过镜像来完成各种应用的部署. 2. docker容器镜像类似于操作系统而容器类似于虚拟机本身.它可以被启动.开始.停止.删除等 ...

  9. Docker学习笔记【三】安装Redis

    项目中使用到Redis,平常都是别人搭建的,今天试着在Google Cloud Platform 上搭建一个学习环境. 1.使用 docker pull redis 从docker hub中下载镜像 ...

随机推荐

  1. 配置/更改vue项目中的资源路径

    打开 build/webpack.base.conf.js  ,在module.exports .resolve.alias下自定义: alias: { 'vue$': 'vue/dist/vue.e ...

  2. React.js Tutorial: React Component Lifecycle

    Introduction about React component lifecycle. 1 Lifecycle A React component in browser can be any of ...

  3. (转)虚拟文件系统(VFS)浅析

    http://www.cnblogs.com/zsw-1993/p/5048144.html 在我看来, "虚拟"二字主要有两层含义: 1, 在同一个目录结构中, 可以挂载着若干种 ...

  4. 2018南京区域赛G题 Pyramid——找规律&&递推

    先手动推出前10项,再上BM板子求出递推式 $A_n = 5A_{n-1} - 10A_{n-2} + 10A_{n-3} - 5A_{n-4} + A_{n-5}$,根据特征根理论可求出特征方程 $ ...

  5. scala 学习笔记--模式匹配

    1.switch java代码 switch (cause) { case ‘2‘ : dropTime=time; case ‘8’:case ‘9’ : case ‘10’:case ‘11’ : ...

  6. LeetCode 1062. Longest Repeating Substring

    原题链接在这里:https://leetcode.com/problems/longest-repeating-substring/ 题目: Given a string S, find out th ...

  7. 线程太多导致socket连接池爆满,进程启动不了

    Issue: 某部机上跟其它机器的连接有问题,ping可以通,telnet端口不通,可以其它机器可以连接到该机器上的进程. java应用启动不起来,产生以下错误. java.net.SocketExc ...

  8. ent 基本使用五 schema介绍

    ent 提供了自动生成schema 但是,我们可以基于生成schema 进行扩展,schema 主要包含以下配置 实体的字段(或者属性)比如 user 的name 以及age 实体的边(关系),比如u ...

  9. 洛谷 P1462 通往奥格瑞玛的道路 题解

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  10. linux命令之------touch命令

    touch命令 1)    作用:用于修改文件或目录的时间属性,包括存取时间和更改时间.若文件不存在,系统会建立一个新的文件. 2)    -a:改变档案的读取时间记录: 3)    -m:改变档案的 ...