Docker版本与官方安装方式
moby、docker-ce(社区版)与docker-ee(企业版)
最早时docker是⼀个开源项⽬,主要由docker公司维护。
2017年3⽉1⽇起,docker公司将原先的docker项⽬改名为moby,并创建了docker-ce和docker-ee。
三者关系:
moby是继承了原先的docker的项⽬,是社区维护的的开源项⽬,谁都可以在moby的基础打造⾃⼰的容器产品docker-ce是docker公司维护的开源项⽬,是⼀个基于moby项⽬的免费的容器产品docker-ee是docker公司维护的闭源产品,是docker公司的商业产品
moby project由社区维护,docker-ce project是docker公司维护,docker-ee是闭源的docker公司维护。
CentOS–官⽅安装
Docker官⽹:https://www.docker.com/
中文网: https://docker.p2hp.com/
了解即可
如果是centos,上⾯的安装命令会在系统上添加yum源:/etc/yum.repos.d/docker-ce.repo# wget https://download.docker.com/linux/centos/docker-ce.repo# mv docker-ce.repo /etc/yum.repos.d# yum install -y docker-ce
或者直接下载rpm安装:
# wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm# yum localinstall docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
国内源安装新版Docker
使⽤aliyun docker yum源安装新版docker
选择dockerCE
删除已安装的Docker
[root@docker-server ~]# yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine
配置阿里云Docker Yum源
阿里云镜像源地址:mirrors.aliyun.com
# step 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# Step 4: 更新并安装Docker-CEsudo yum makecache fastsudo yum -y install docker-ce# Step 4: 开启Docker服务sudo service docker start
查看docker版本
[root@docker_server ~]# docker -vDocker version 26.1.4, build 5650f9b
安装指定版本
查看Docker版本:# yum list docker-ce --showduplicates
示例:
[root@docker_server ~]# yum list docker-ce --showduplicates已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager可安装的软件包 docker-ce-stabledocker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stabledocker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stabledocker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable想安装 18.03.1.ce-1.el7.centos$ yum -y install docker-ce-18.03.0.ce-1.el7.centos
安装较旧版本(⽐如Docker 17.03.2) :
需要指定完整的rpm包的包名,并且加上–setopt=obsoletes=0 禁⽌⾃动更新参数:
# yum install -y --setopt=obsoletes=0 \docker-ce-17.03.2.ce-1.el7.centos.x86_64 \docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch例如:# yum install -y --setopt=obsoletes=0 docker-ce-19.03.2 docker-ce-selinux-19.03.2
安装Docker新版本:加上rpm包名的版本号部分或不加都可以:
[root@docker-server ~]# yum install -y docker-ce #默认安装的是最新版本
启动Docker服务:
#systemctl enable docker#systemctl start docker
查看docker版本状态:
[root@docker-server ~]# docker -vDocker version 20.10.21, build baeda1f
[root@docker_server ~]# docker versionClient: Docker Engine - Community Version: 26.1.4 API version: 1.45 Go version: go1.21.11 Git commit: 5650f9b Built: Wed Jun 5 11:32:04 2024 OS/Arch: linux/amd64 Context: defaultServer: Docker Engine - Community Engine: Version: 26.1.4 API version: 1.45 (minimum version 1.24) Go version: go1.21.11 Git commit: de5c9cf Built: Wed Jun 5 11:31:02 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.33 GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0
查看docker运行状态:
# docker infoContainers: 0Running: 0Paused: 0Stopped: 0Images: 0...
报错1:docker info的时候报如下错误bridge-nf-call-iptables is disabled解决1:追加如下配置,然后重启系统# vim /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-arptables = 1问题2:虚拟机ping百度也能ping通,但是需要等好⼏秒才出结果,关键是下载镜像⼀直报错如下# docker pull daocloud.io/library/nginx Using default tag: latest Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp 192.168.1.189:41335->192.168.1.2:53: i/o timeout解决2:我的虚拟机⽤的⽹关和dns都是虚拟机⾃⼰的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果# vim /etc/resolv.conf nameserver 8.8.8.8
简单测试
docker容器(nginx)
docker镜像(nginx)
docker服务
虚拟机
物理服务器
Docker官网镜像网站:https://hub.docker.com/
总是无法访问
运⾏⼀个容器[root@192 ~]# docker run -it daocloud.io/library/ubuntu /bin/bash #运⾏容器Unable to find image 'daocloud.io/library/ubuntu:latest' locallylatest: Pulling from library/ubuntu5c939e3a4d10: Pull completec63719cdbe7a: Pull complete19a861ea6baf: Pull complete651c9d2d6c4f: Pull completeDigest: sha256:bc025862c3e8ec4a8754ea4756e33da6c41cba38330d7e324abd25c8e0b93300Status: Downloaded newer image for daocloud.io/library/ubuntu:latest如果⾃动进⼊下⾯的容器环境,说明•ubuntu镜像运⾏成功,Docker的安装也没有问题:可以操作容器了root@db8e84e2ea96:/#
国内镜像源
去查看如何使⽤aliyun的docker镜像库去查看如何使⽤⽹易蜂巢的docker镜像库----作业,并且通过⽹易蜂巢源下载⼀个nginx的镜像---docker pull 镜像仓库与镜像名字https://www.daocloud.io/
Docker 加速器
使⽤ Docker 的时候,需要经常从官⽅获取镜像,但是由于显⽽易⻅的⽹络原因,拉取镜像的过程⾮常耗时,严重影响使⽤ Docker 的体验。因此 DaoCloud 推出了加速器⼯具解决这个难题,通过智能路由和缓存机制,极⼤提升了国内⽹络访问 Docker Hub 的速度。Docker 加速器对 Docker 的版本有要求吗? 需要 Docker 1.8 或更⾼版本才能使⽤。Docker 加速器⽀持什么系统? Linux, MacOS 以及 Windows 平台。Docker 加速器是否收费? 提供永久免费的加速器服务,请放⼼使⽤。
国内⽐较好的镜像源:网易蜂巢、aliyun和daocloud
可信镜像中心
https://hub.atomgit.com
进⼊镜像市场:
随便搜索一个,搜mysql
选择合适的版本,以第一个为例
拉取镜像:
[root@docker_server ~]# docker pull hub.atomgit.com/amd64/mysql:5.7.43
查看镜像:
[root@docker_server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhub.atomgit.com/amd64/mysql 5.7.43 8a709252ac32 8 months ago 582MB
启动mysql实例:
[root@docker_server ~]# docker run --name testmysql -e MYSQL_ROOT_PASSWORD=ChenFuguo@123 -d hub.atomgit.com/amd64/mysql:5.7.43其中: ChenFuguo@123是mysql密码 -d 以后台模式运行 后面是镜像仓库名 : 标签名 --name testmysql 是给这个新创建的 MySQL 容器设置的名称。通过指定容器名称,可以更方便地管理和访问这个容器。例如,可以使用 docker stop testmysql 或 docker start testmysql 来停止或启动这个容器
连接到mysql实例:
[root@docker_server ~]# docker exec -it testmysql mysql -u root -p输入密码即可连接
可使用exit; quit; 或者ctrl +D 退出连接
可选择不同的镜像:
[root@docker_server ~]# docker pull hub.atomgit.com/amd64/nginx:1.25.2-perl1.25.2-perl: Pulling from amd64/nginx579f0d7d93d7: Pull complete274d80d3b84f: Pull complete51aa40ee1ebc: Pull completeb6fdae62d276: Pull complete745c8321dca1: Pull complete077c1ce9b937: Pull complete9f88e68f420e: Pull completeb58aacc8a5cd: Pull completeDigest: sha256:615eb6b7237368628ba586460fdab74bccbd4610533f59717ef2cc7c25458efcStatus: Downloaded newer image for hub.atomgit.com/amd64/nginx:1.25.2-perlhub.atomgit.com/amd64/nginx:1.25.2-perl
下载nginx的不同版本,如1.24
[root@docker_server ~]# docker pull hub.atomgit.com/amd64/nginx:1.24.01.24.0: Pulling from amd64/nginx1a82ea2e025a: Pull complete3ef6bc7c6b34: Pull completeb8ea68ef5510: Pull complete152901865926: Pull completeb39f33faf2b2: Pull completecf865bd10e05: Pull completeDigest: sha256:26d247f50cdb2dcb0e57198ee5c66de55693d63e0f6af9142332888de54dd370Status: Downloaded newer image for hub.atomgit.com/amd64/nginx:1.24.0hub.atomgit.com/amd64/nginx:1.24.0
[root@docker_server ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEhub.atomgit.com/amd64/nginx 1.25.2-perl a707aa62d35c 8 months ago 236MBhub.atomgit.com/amd64/nginx 1.24.0 f9d80bfebb18 8 months ago 142MBhub.atomgit.com/amd64/mysql 5.7.43 8a709252ac32 8 months ago 582MB
启动拉取下来的nginx
docker run --name <容器名称> -d -p <宿主机端口>:<容器端口> <镜像名称>:<标签>
docker run --name testnginx -d -p 80:80 hub.atomgit.com/amd64/nginx:1.25.2-perl
进入该容器:
假设你有一个名为 testnginx
的容器,你可以使用以下命令进入该容器:
$ docker exec -it testnginx /bin/bash$ ls /usr/share/nginx/html/50x.html index.html
如果该容器不支持 /bin/bash
,你可以尝试使用 /bin/sh
:
docker exec -it testnginx /bin/sh
退出容器
在容器内部,你可以像在普通 Linux 环境中一样操作。要退出容器的 shell 会话,只需输入 exit
命令:
exit
这将会结束你在容器中的会话并返回到宿主机的命令行提示符。