Docker 是一个开源的容器引擎,它有助于更快地交付应用。Docker 可将应用程序和基础设施层分离,并将基础设施当做程序一样进行管理。安装篇介绍 Docker 的安装,并介绍 Docker 镜像加速器和 Docker 常用命令
安装
演示在 CentOs 上安装 Docker,其他操作系统上的安装可参考官方文档
系统要求
- CentOs 7.x
- 64 位
卸载旧版本
旧版本的 Docker 被叫做 docker
或者 docker-engine
。如果先前有安装,需要卸载掉它和它的相关依赖
1 | sudo yum remove docker \ |
若 yum
报告没有任何一个包被安装,那更好
/var/lib/docker
下的图像、容器、卷和网络会被保留。Then,新版的 Docker 叫做 docker-ce
开始安装
你可以使用 3 种方式安装 Docker
建立 Docker 仓库,通过仓库安装。安装和升级都很简单,这也是官方推荐的方式
RPM 安装包的方式手动安装,而且完全手动管理升级
使用自动化脚本安装
使用仓库安装
安装 Docker 之前,你需要先建立 Docker 仓库
建立仓库
安装
yum-utils
,这样可以使用yum-config-manager
工具设置 Yum 源1
sudo yum install -y yum-utils
使用以下命令来建立仓库
1
2
3
4
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo可选项:开启
edge
和test
仓库。他们默认是关闭的1
2
3sudo yum-config-manager --enable docker-ce-edge
sudo yum-config-manager --enable docker-ce-test类似地,可以使用以下命令来关闭他们
1
sudo yum-config-manager --disable docker-ce-edge
安装 Docker CE
使用以下命令安装最新版本,或调到下一步安装指定版本
1
sudo yum install docker-ce
如要安装指定版本,先列出所有可用版本,然后从中选择需要的版本
a. 排序并列出你仓库中可用的版本。根据版本号来排序。
1
2
3$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stableb. 以安装上面例子中列出的版本为例,执行以下命令
1
sudo yum install docker-ce-<docker-ce-18.03.0.ce>
至此,Docker 已经安装好了,但是还没有启动
启动 Docker
1
sudo systemctl start docker
通过运行
hello-world
镜像来检验是否安装成功1
sudo docker run hello-world
这条命令会容器中下载并运行一个测试镜像。当容器正常运行后,终端会输出一些信息然后退出。
升级 Docker
升级 Docker 其实就是按照以上教程再安装需要的版本
使用 RPM 安装包安装
如果无法自动安装,或觉得自动安装太慢(一般 30min ),你可以下载 .rpm
包手动安装
下载安装包
前往地址 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 下载所需
.rpm
包如需下载 edge 版本,将路径中的
stable
换成edge
便可使用
yum
安装后面路径改为包的放置目录
1
sudo yum install /path/to/package.rpm
启动
docker
1
sudo systemctl start docker
通过运行
hello-world
镜像来检验是否安装成功1
sudo docker run hello-world
这条命令会容器中下载并运行一个测试镜像。当容器正常运行后,终端会输出一些信息然后退出。
使用脚本安装
请查阅官网文档。(字太多了,而且用的较少,就不翻译了)
卸载
卸载 docker
1
sudo yum remove docker-ce
删除
/var/lib/docker
下的图像、容器、卷和自定义配置文件等1
sudo rm -rf /var/lib/docker
配置镜像加速器
国内访问 Docker Hub 不稳定,所以需要配置镜像加速器。常用的加速器有阿里云加速器、DaoCloudy 加速器等,用法大致类似,这里以阿里云为例
- 登录阿里云,进入加速器控制台
复制并执行给出的代码,修改 daemon 配置文件
/etc/docker/daemon.json
1
2
3
4
5
6
7
8sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://********.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker其中
*
号的 8 位每个账号都是不同的
Docker 常用命令
查询 Docker 各种信息
查看帮助文档、查看命令文档
1
2docker
docker container --help查看 Docker 版本和信息
1
2
3docker --version
docker version
docker info运行镜像和查看运行的镜像
测试/执行 Docker 镜像
1
docker run hello-world
列出所有镜像,以下两个命令相同
1
2docker image ls
docker images获取和删除镜像
以搜索 java 镜像为例
1
docker search java
能看到类似以下结果。每一列分别是名字、描述、收藏数、是否是官方仓库、是否自动构建的镜像仓库
1
2NAME DESCRIPTION STARS OFFICIAL AUTOMATED
java Java is a co… 1693 [OK]以下命令从 Docker Registry 上下载镜像
1
docker pull java
以下第一个命令删除名为
hello-world
的镜像,或第二个命令删除所有镜像1
2docker rmi hello-world
docker rmi -f $(docker images)-f
参数表示强制删除启动、停止、重启容器
以下命令在终端打印
Hello World
字样,就行直接执行/bin/echo 'Hello World'
一样1
docker run java /bin/echo 'Hello World'
执行下面的命令启动一个 Nginx 容器。
-d
使其在后台运行,-p
映射容器的 80 端口到主机的 91 端口1
docker run -d -p 91:80 nginx
访问宿主机的 91 端口,能看到内容为 “Welcome to Nginx!”的页面
以下的命令查看所有容器。命令
docker ps
与其作用相同。-all
或-a
参数使已经关闭的容器也显示出来,-aq
参数使命令只显示容器 ID1
2
3
4$ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fbee2b39d7fd nginx:my "nginx …" 16 seconds ago Up 11 seconds 0.0.0.0:92->80/tcp optimistic_brahmaguptadocker stop
命令停止容器,或改成kill
强制停止1
docker stop fbee2b39d7fd
fbee2b39d7fd 是容器 ID。其实以上命令这样写
docker stop f
便可。容器 ID 输入具有辨识度的前几位就行docker start
命令启动已经停止的容器1
docker start f
docker restart
命令重启容器。实际是先执行了docker stop
,然后执行了docker start
进入、删除容器
docker attach
命令进入容器。但是这一命令不太方便。多个窗口同时 attach 到同一个容器时,所有窗口会同步显示。一个窗口堵塞,其他窗口也会无法执行操作对进入容器更加详尽的讲解,请看这篇博客
docker rm fbee2b39d7fd
命令删除指定容器,同样的,ID 具有辨识度即可。-f
强制删除正在运行的容器docker rm -f $(docker ps -a -q)
删除所有容器
后记
翻译自 Docker 官方文档
借鉴《Spring Cloud与Docker微服务架构实战》/周立 著