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 中有内容,即可
原文:https://www.cnblogs.com/bobo137950263/p/14289828.html