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安装的主要内容,如果未能解决你的问题,请参考以下文章