docker初体验

1.初始化配置安装环境
yum install -y yum-utils device-mapper-persistent-data lvm2
添加镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
会在/etc/yum.repos.d/目录下生成一个docker-ce的repo
[root@master /etc/yum.repos.d]# cat docker-ce.repo 
2.更新并安装docker
yum makecache fast
yum install -y docker-ce
如果需要container-selinux,可以实用aliyun的extra仓库,https://mirrors.aliyun.com/centos/7/extras/x86_64/
Dependencies Resolved

=====================================================================================================================================
 Package                               Arch               Version                                 Repository                    Size
=====================================================================================================================================
Installing:
 docker-ce                             x86_64             3:20.10.2-3.el7                         docker-ce-stable              27 M
Installing for dependencies:
 container-selinux                     noarch             2:2.119.2-1.911c772.el7_8               aliyun_extra                  40 k
 containerd.io                         x86_64             1.4.3-3.1.el7                           docker-ce-stable              33 M
 docker-ce-cli                         x86_64             1:20.10.2-3.el7                         docker-ce-stable              33 M
 docker-ce-rootless-extras             x86_64             20.10.2-3.el7                           docker-ce-stable             9.0 M
 fuse-overlayfs                        x86_64             0.7.2-6.el7_8                           aliyun_extra                  54 k
 fuse3-libs                            x86_64             3.6.1-4.el7                             aliyun_extra                  82 k
 libseccomp                            x86_64             2.3.1-3.el7                             localyumrepo                  56 k
 slirp4netns                           x86_64             0.4.3-4.el7_8                           aliyun_extra                  81 k

Transaction Summary
=====================================================================================================================================
Install  1 Package (+8 Dependent packages)

Total download size: 102 M
Installed size: 423 M
Is this ok [y/d/N]: 

3.安装完成后启动docker ,systemctl start docker
安装完成之后,就会自动创建一个桥接的网卡,docker,地址为172.17.0.1,后面所有的容器地址,均在这个网段
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:56:d4:13:c8 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
4.查询镜像,docker search centos,下载镜像docker image pull centos7
[root@master /etc/yum.repos.d]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    ae2feff98a0c   3 weeks ago   133MB
centos       latest    300e315adb2f   4 weeks ago   209MB
通过命令,查看镜像的详细信息,docker image inspect nginx
image_id是该镜像的唯一标识,通过tag可以修改名称,但是唯一标识是不会改变的

5.启动一个nginx容器
[root@master /etc/yum.repos.d]# docker image ls -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    ae2feff98a0c   3 weeks ago   133MB
centos       latest    300e315adb2f   4 weeks ago   209MB
[root@master /etc/yum.repos.d]# docker container run -d --name='docker_nginx' ae2feff98a0c
9a27a37fa71f8bafb0033ef3a2345e3b98dce4f3ea18c37ad09ecc353f492900
命令关键字是container,创建的命令是run,-d表示是后台守护进程,--name是容器的名称,后面的12位表示的是image_id
查看容器的信息
[root@master /etc/yum.repos.d]# docker container ls -a 
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS     NAMES
9a27a37fa71f   ae2feff98a0c   "/docker-entrypoint.…"   About a minute ago   Up About a minute   80/tcp    docker_nginx
查看容器的详细信息,使用的是inspect,可以看到该容器的所有信息,container_id也是该容器的唯一标识,port表示该容器的端口,应用端口
[root@master /etc/yum.repos.d]# curl -I 172.17.0.2
HTTP/1.1 200 OK
Server: nginx/1.19.6
Date: Sun, 10 Jan 2021 10:54:30 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 15 Dec 2020 13:59:38 GMT
Connection: keep-alive
ETag: "5fd8c14a-264"
Accept-Ranges: bytes

6.容器现在只能和自己的宿主机进行通信,如果想让外面的主机也能访问到容器资源,就需要在容器创建的时候,进行端口绑定操作,命令是-p
关闭容器,stop,启动容器start,销毁容器,rm,强制用-f
[root@master /etc/yum.repos.d]# docker container ls -a 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
9a27a37fa71f   ae2feff98a0c   "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   80/tcp    docker_nginx
[root@master /etc/yum.repos.d]# docker container stop docker_nginx
docker_nginx
[root@master /etc/yum.repos.d]# docker container ls -a 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                    PORTS     NAMES
9a27a37fa71f   ae2feff98a0c   "/docker-entrypoint.…"   5 minutes ago   Exited (0) 1 second ago             docker_nginx

重新创建一个新的容器,绑定端口8080
[root@master /etc/yum.repos.d]# docker container run -d -p 192.168.64.131:8080:80 --name="docker_nginx" ae2feff98a0c
0aad786d76ccedc2a55be6dcad344e810357bdb93cf883bb38b53383faa06957
[root@master /etc/yum.repos.d]# docker container ls -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                         NAMES
0aad786d76cc   ae2feff98a0c   "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   192.168.64.131:8080->80/tcp   docker_nginx
添加--no-turnc可以查看完整的信息
主机上就会产生新的监听
[root@master /etc/yum.repos.d]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.64.131:8080     0.0.0.0:*               LISTEN      23627/docker-proxy  
防火墙上会产生映射表
然后通过本地的192.168.64.131:8080,就可以直接访问nginx
确实很方便,IP地址的映射有多种方式,前面是宿主机的地址和端口,后面才是容器的端口,也可以支持udp
host:port:container_port
port:container_port
host::container_port
host:port:container_port/udp

7.交互式创建容器,进入容器中
[root@master /]# docker container run -it --name="docker_centos" 300e315adb2f
[root@be272bc4d2ce /]# 
[root@be272bc4d2ce /]# 
[root@be272bc4d2ce /]# 
[root@be272bc4d2ce /]# ip a
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
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

[root@be272bc4d2ce /]# cat /etc/redhat-release 
CentOS Linux release 8.3.2011

8.在官网下载docker镜像时比较慢,可以通过配置国内docker镜像加速器,快速下载镜像,配置方法是在/etc/docker目录下创建daemon.json,配置内容
[root@master ~]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
    ]

}
然后重启docker,docker info 中有内容,即可

 

posted @ 2021-01-17 19:11  波波波波波  阅读(116)  评论(0编辑  收藏  举报