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 stop firewalld.service
● systemctl disable firewalld.service
● 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

配置yum源

● 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
● sysctl -p

查看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基础命令

docker search 查找docker image

在没有配置好网络的情况下会出下这种报错,网上找下排查方法

● docker search nginx

查找镜像也可以通过docker hub查找 这个是查找nginx的信息
https://hub.docker.com/search?q=nginx&type=image

选择第一个可以查看这个镜像的dockerfile(介绍镜像打包的方式,以及环境怎么组成的)

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

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",容器就拥有了访问任何其它设备的权限。

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参数,可以在创建一个容器后退出时,将容器删除

删除docker容器

● docker rm e0c62b097096(容器id)

删除镜像

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

posted @ 2020-06-04 00:17  流浪的少年  阅读(905)  评论(0编辑  收藏  举报