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