一、前提条件
Docker支持以下的CentOS版本:
- CentOS 7 (64-bit),系统内核版本为 3.10 以上
- CentOS 6.5 (64-bit) 或更高的版本,系统内核版本为2.6.32-431 或者更高版本
二、安装前准备
#CentOS7内核版本为 3.10 以上
[root@node1 ~]# uname -r
3.10.0-862.el7.x86_64
#安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
#配置docker-ce源
方法一:使用阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
方法二:使用tsinghua源
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
#替换docker源
[root@node1 yum.repos.d]# vim docker-ce.repo
:%s@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg
[root@node1 yum.repos.d]# yum makecache fast
三、docker程序环境
环境配置文件:
/etc/sysconfig/docker-network
/etc/sysconfig/docker-storage
/etc/sysconfig/docker
Unit File:/usr/lib/systemd/system/docker.service
Docker Registry配置文件:/etc/containers/registries.conf
docker-ce配置文件:/etc/docker/daemon.json
Docker镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决
-
阿里云加速器(注册阿里云账号,专用加速器地址获得路径:https://cr.console.aliyun.com/#/accelerator)
-
网易的镜像地址:http://hub-mirror.c.163.com
{
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
}
四、安装docker-ce
[root@node1 ~]# yum -y install docker-ce
#配置docker镜像加速
[root@node1 ~]# mkdir /etc/docker/
[root@node1 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
[root@node1 ~]# systemctl start docker
[root@node1 ~]# systemctl enable docker
[root@node1 ~]# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false
拉取镜像
docker images 查看所有镜像
--fomat 格式化输出
-q 只显示镜像id
例如:
docker images --format ‘{{.Repository}}:{{.Tag}}’
[root@node1 ~]# docker image pull nginx:1.14-alpine
[root@node1 ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
57c14dd66db0: Pull complete
Digest: sha256:7964ad52e396a6e045c39b5a44438424ac52e12e4d5a25d94895f2058cb863a0
Status: Downloaded newer image for busybox:latest
[root@node1 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 3a093384ac30 3 days ago 1.2MB
nginx 1.14-alpine c5b6f731fbc0 2 weeks ago
[root@node1 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
83f54d31f68a bridge bridge local
6f1843f35ad1 host host local
3b2291761f54 none null local
进入容器
docker run
p: 配置容器端口映射
-v: 配置目录挂载
-d: 容器在后台运行
--restart: 配置容器的重启策略
--network: 配置容器网络,如--network=host表示容器使用宿主机网络
--rm: 当容器退出时自动删除容器
--it:
- i, 容器的标准输入保持打开
- t, Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入
例如:
docker run -d --network=host --restart=always -p 80:8080 -v /home/test:/tmp/test
hub.xfyun.cn/google_containers/busybox:v0.1.0 sleep 3600
[root@node1 ~]# docker run --name b1 -it busybox:latest
/ # ls
bin dev etc home proc root sys tmp usr var
/ # mkdir /data/html -p
/ # vi /data/html/index.html
Busybox httpd server
/ # httpd -f -h /data/html/
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15f803fac569 busybox:latest "sh" About an hour ago Up About an hour b1
[root@node1 ~]# curl http://172.17.0.2
Busybox httpd server
#移除
[root@node1 ~]# docker kill b1
b1
[root@node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15f803fac569 busybox:latest "sh" 2 days ago Exited (137) 5 seconds ago b1
[root@node1 ~]# docker rm b1
b1
[root@node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
运行容器
[root@node1 ~]# docker run --name web1 -d nginx:1.14-alpine
9cc0cbf6295aaabf6287770814d40ff580ecb5ef856aa2c64a062548fe299367
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9cc0cbf6295a nginx:1.14-alpine "nginx -g 'daemon of…" 27 seconds ago Up 25 seconds 80/tcp web1
[root@node1 ~]# docker inspect web1
[root@node1 ~]# curl 172.17.0.2
[root@node1 ~]# docker logs web1
172.17.0.1 - - [07/Jan/2019:02:06:01 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
Docker常用命令
docker ps 列出正在运行的容器
-a: 查看所有容器,包括已退出的容器
-n: 展示最近创建的n个容器
-q: 只展示容器ID
-s: 展示容器文件大小
docker inspect 查看容器详细信息
docker inspect {容器ID}
docker logs 查看容器标准输出日志
-f: 打印容器最新输出的日志
--tail:指定打印日志结尾的行数,默认是全部打印
docker save 将镜像保存到文件中
-o: 指定镜像打包到的文件名
-i: 指定加载的镜像文件
docker load 从文件加载镜像
docker save –o {fileName} {images} 镜像可以有多个,以空格分隔
docker load -i {fileName}
运行redis
[root@node1 ~]# docker run --name kvstor1 -d redis:4-alpine
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e798673ebd6f redis:4-alpine "docker-entrypoint.s…" 24 seconds ago Up 22 seconds 6379/tcp kvstor1
9cc0cbf6295a nginx:1.14-alpine "nginx -g 'daemon of…" 10 minutes ago Up 10 minutes 80/tcp web1
[root@node1 ~]# docker exec -it kvstor1 /bin/sh
/data # ps
PID USER TIME COMMAND
1 redis 0:00 redis-server
12 root 0:00 /bin/sh
17 root 0:00 ps
/data # netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
tcp 0 0 :::6379 :::* LISTEN
/data # redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> exit
/data #