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 中有内容,即可