docker——2、在CentOS 7安装docker

一、前提条件

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://registry.docker-cn.com

  • 阿里云加速器(注册阿里云账号,专用加速器地址获得路径: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 # 

你可能感兴趣的:(docker,docker)