Centos7.6安装Docker安装

Posted lldsn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7.6安装Docker安装相关的知识,希望对你有一定的参考价值。

系统环境准备

cat /etc/centos-release(最小化安装)

CentOS Linux release 7.6.1810 (Core)

uname -r (内核要在3.10以上)

1.1.10.0-957.el7.x86_64

getenforce

Disabled

systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

hostname

Docker2

hostname -I

192.168.1.72 10.0.0.72

yum install -y bash-completion nmap lrzsz nc tree htop wget vim net-tools.x86_64 iptables-services yum-utils

docker需要用iptables进行网络转发

systemctl enable iptables

systemctl start iptables

卸载老版本docker

yum remove docker

              docker-client               docker-client-latest               docker-common               docker-latest               docker-latest-logrotate               docker-logrotate               docker-engine

安装docker

2.1配置yum源
2.11# yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
修改pull镜像为国内镜像

vim /etc/docker/daemon.json

{
"registry-mirrors":[
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
查看docker版本

yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
安装最新版docker

yum install docker-ce docker-ce-cli containerd.io

自定义安装docker版本上边命令加上版本号即可

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动docker加入开机自启动

systemctl start docker

systemctl enable docker

启动docker有个警告
警告信息
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

vim /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
查看docker安装信息

docker info

Client:
Debug Mode: false
Server: #服务
Containers: 4 #有几个docker容器
Running: 0 #运行的容器
Paused: 0 #暂停的容器
Stopped: 4 #停止的docker容器
Images: 3 #已有几个镜像
Server Version: 19.03.11 #docker版本
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.934GiB
Name: Docker
ID: BOI7:72AH:EQJE:O5TN:M6CN:JB3J:W7YS:VEK2:IQA5:WPQ3:BETB:W3SW
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://kfwkfulq.mirror.aliyuncs.com/
https://2lqq34jg.mirror.aliyuncs.com/
https://pee6w651.mirror.aliyuncs.com/
http://hub-mirror.c.163.com/
https://docker.mirrors.ustc.edu.cn/
https://registry.docker-cn.com/
Live Restore Enabled: false
查询docker版本信息

docker version

Client: Docker Engine - Community
Version: 19.03.11 #docker客户端版本信息
API version: 1.40 #客户端api版本信息,docker进行交互就是靠这个
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:13:48 2020
OS/Arch: linux/amd64
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 19.03.11 #服务端版本信息
API version: 1.40 (minimum version 1.12)#服务端api版本信息
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:12:26 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
查看网桥
]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1f:08:fd brd ff:ff:ff:ff:ff:ff
inet 192.168.1.71/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::74e2:f196:1c6a:9510/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1f:08:07 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.71/24 brd 10.0.0.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::5b92:63e5:fc99:64dd/64 scope link noprefixroute
valid_lft forever preferred_lft forever

安装好docker就可以看到Docker0虚拟网桥

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:a1:5a:a3:ff brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
Docker配置文件(Cent OS 7)

vim /usr/lib/systemd/system/docker.service

egrep -v ‘^$|#‘ /usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
[Service] # 在这里可以定义端口映射
Type=notify

docker环境变量设置Environment=* 名字开头设置的

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
docker日志
Docker的日志文件写入到 /var/log/message里
技术图片
docker有问题的时候可以先从这里进行排查
三、docker基础命令
1.docker search 查找docker image
在没有配置好网络的情况下会出下这种报错,网上找下排查方法
技术图片

docker search nginx

技术图片
查找镜像也可以通过docker hub查找 这个是查找nginx的信息
https://hub.docker.com/search?q=nginx&type=image
技术图片
选择第一个可以查看这个镜像的dockerfile(介绍镜像打包的方式,以及环境怎么组成的)
技术图片
2.docker pull 下载docker image镜像

docker pull nginx 下载ngingx镜像

docker镜像下载时是通过多层下载的,和docker原理有关,同时下载多层到本地,在更新时,docker只拉去最新的一部分即可完成,有许多底层很少变动
技术图片
这是我更新下载java镜像的示例,可以看到下载的当镜像没有改动的地方,就会提示已存在了

docker pull java

技术图片
查看已有的镜像文件

docker images

镜像名 标签 镜像ID唯一的 创建时间 大小
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4392e5dad77d 23 hours ago 132MB
3. docker run 运行镜像
启动java容器

docker run -it java java -version

技术图片

docker run -it java ps

技术图片
通过这个命令可以看出docker的底层是运行在一个精简的linux上
技术图片
docker run 里面的命令结束了,container就结束了,所以有时候会出现运行完一个命令容器关闭了的现象

docker ps -a # 通过这个命令可以看到刚刚run的容器

技术图片

docker ps # 这个命令可以看到所有运行的容器

技术图片

docker run java ip addr 通过这个命令可以看到容器被分配的ip

技术图片

docker run java env # 这个命令可以看到java容器环境变量,可以看到容器将很多信息直接加入到环境变量中

技术图片
docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG...]
决定容器的运行方式,前台执行还是后台执行
docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。
docker exec来进入到到该容器中,或者attach(这个参数一般不太推荐使用, 因为docker运行完命令一般都会停止容器)重新连接容器的会话
进行交互式操作(例如Shell脚本),那我们必须使用-i -t参数同容器进行数据交互
docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID
Docker时有自动化的需求,你可以将containerID输出到指定的文件中(PIDfile): --cidfile=""
Docker的容器是没有特权的,例如不能在容器中再启动一个容器。这是因为默认情况下容器是不能访问任何其它设备的。但是通过"privileged",容器就拥有了访问任何其它设备的权限。
4. docker create/start/stop/pause/unpause容器生命周期相关指令
docker create 创建容器

docker create -it --name=myjava java java version

040a61307b5c503fab37f04f935673c7770891402613692b9a61814fd07e7633 #这个是容器的ID

docker ps -a #可以看到第一个就是刚刚创建的容器

技术图片

docker start myjava 创建的容器可以start启动

技术图片
运行一个mysql容器,并将mysql端口映射到3306

docker pull mysql

docker create --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql

docker start mysql

docker ps

技术图片
容器通过docker-proxy代理到外网中

netstat -ltp

技术图片
连接测试,成功连接到容器中
技术图片

docker exec mysql env #这里看到容器是将mysql的密码也放在环境变量中的,可以在网上找找解决方案

技术图片

docker exec -it mysql /bin/bash #这样就登陆到容器中了

登录进去后,可以看到容器名就是容器id
技术图片
运行中的docker就可以用docker run去查看
技术图片
可以通过stop将容器停止

docker stop mysql

技术图片
使用run -rm参数,可以在创建一个容器后退出时,将容器删除
5.删除docker容器

docker rm e0c62b097096(容器id)

技术图片
6.删除镜像

docker rmi myjava #删除镜像,这有一个自己创建的镜像

技术图片
技术图片



































































































































































































以上是关于Centos7.6安装Docker安装的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7.6安装Docker

Centos7.6安装Docker安装

Centos7.6安装Docker安装

Centos7.6版本-安装Docker服务-过程记录

Centos7.6下使用docker方法安装stf

CentOS7.6安装docker最新版