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/
了解即可
如果是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/do
cker-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 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
查看docker版本
[root@docker_server ~]# docker -v
Docker 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-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-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-1
9.03.2
安装Docker新版本:加上rpm包名的版本号部分或不加都可以:
[root@docker-server ~]# yum install -y docker-ce #默认安装的是最新版本
启动Docker服务:
#systemctl enable docker
#systemctl start docker
查看docker版本状态:
[root@docker-server ~]# docker -v
Docker version 20.10.21, build baeda1f
[root@docker_server ~]# docker version
Client: 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: default
Server: 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 info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
...
报错1:
docker info的时候报如下错误
bridge-nf-call-iptables is disabled
解决1:
追加如下配置,然后重启系统
# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.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: looku
p 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' locally
latest: Pulling from library/ubuntu
5c939e3a4d10: Pull complete
c63719cdbe7a: Pull complete
19a861ea6baf: Pull complete
651c9d2d6c4f: Pull complete
Digest: sha256:bc025862c3e8ec4a8754ea4756e33da6c41cba38330d7e324abd25c8e0b
93300
Status: 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 images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.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-perl
1.25.2-perl: Pulling from amd64/nginx
579f0d7d93d7: Pull complete
274d80d3b84f: Pull complete
51aa40ee1ebc: Pull complete
b6fdae62d276: Pull complete
745c8321dca1: Pull complete
077c1ce9b937: Pull complete
9f88e68f420e: Pull complete
b58aacc8a5cd: Pull complete
Digest: sha256:615eb6b7237368628ba586460fdab74bccbd4610533f59717ef2cc7c25458efc
Status: Downloaded newer image for hub.atomgit.com/amd64/nginx:1.25.2-perl
hub.atomgit.com/amd64/nginx:1.25.2-perl
下载nginx的不同版本,如1.24
[root@docker_server ~]# docker pull hub.atomgit.com/amd64/nginx:1.24.0
1.24.0: Pulling from amd64/nginx
1a82ea2e025a: Pull complete
3ef6bc7c6b34: Pull complete
b8ea68ef5510: Pull complete
152901865926: Pull complete
b39f33faf2b2: Pull complete
cf865bd10e05: Pull complete
Digest: sha256:26d247f50cdb2dcb0e57198ee5c66de55693d63e0f6af9142332888de54dd370
Status: Downloaded newer image for hub.atomgit.com/amd64/nginx:1.24.0
hub.atomgit.com/amd64/nginx:1.24.0
[root@docker_server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.atomgit.com/amd64/nginx 1.25.2-perl a707aa62d35c 8 months ago 236MB
hub.atomgit.com/amd64/nginx 1.24.0 f9d80bfebb18 8 months ago 142MB
hub.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
这将会结束你在容器中的会话并返回到宿主机的命令行提示符。