【Docker学习之二】Docker部署安装

2023-06-07,,

环境
  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部署安装的相关教程结束。

《【Docker学习之二】Docker部署安装.doc》

下载本文的Word格式文档,以方便收藏与打印。