/ docker

docker

通常 Windows 和 Mac 需要下载 Docker Toolbox ,这是一个 GUI 工具包。

配置 Docker Hub 镜像源

dockerhub 下载镜像的速度太慢,我们使用国内镜像加速下载:阿里开发者平台

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签下的 Registry mirrors 列表中将 您的专属加速器地址 加到 "registry-mirrors" 的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

黄色警告:registry-mirrors

no certs for https://xxxxxx.mirror.aliyuncs.com

解决方案:Can not use registry mirror

docker login registry.cn-hangzhou.aliyuncs.com
docker logout registry.cn-hangzhou.aliyuncs.com

Docker for Windows

Windows 下需要开启 Heyper-V,如果电脑上有 VirtualBox 虚拟机会有冲突。Docker 和 VirtualBox 二选一。

Docker for Mac

docker --version
docker-compose --version
docker-machine --version

Docker for CentOS7

参考:https://docs.docker.com/install/linux/docker-ce/centos

验证安装成功:

sudo docker run hello-world

如果服务器的用户权限不是 root 的话,每次调用 docker 的命令需要加 sudo,有些人可能觉得这个很烦。
可以添加一个 docker 组来解决这个问题。参见:https://docs.docker.com/install/linux/linux-postinstall/

解决方法就是创建一个 docker 组(默认已经创建了 docker 组),并将当前用户加入该组。

sudo usermod -aG docker $USER
exit

重新登录后验证:

docker run hello-world

如果权限依然不够,则重启系统。

镜像

搜索镜像:

docker search centos

下载镜像:

docker pull centos

查看本地镜像:

docker images

容器(container)

我们可以基于进行创建多个容器

基于镜像创建容器

docker run centos /bin/echo 'hello'

创建一个自定义名称的容器:

docker run --name greeting centos /bin/echo 'hello'

查看容器:

docker ps

docker ps -all

重新运行:

docker restart greeting

docker start greeting

docker logs greeting

运行交互的容器

可以登录进去:

docker run --interactive --tty centos /bin/bash

在后台运行的容器

docker run --detach centos ping baidu.com

docker ps

拷贝容器 id c9b88498049c,在新的 console 里运行:

docker logs --follow c9b88498049c

你会发现容器在不停地输出日志,这说明容器在后台不停地运行

docker stop c9b88498049c

再次查看容器日志,就会发现容器没有新的日志输出了。

创建镜像

有两种方法来创建镜像:

  1. 通过容器创建镜像。
  2. 通过 Dockerfile 创建镜像。

method1: 通过容器创建镜像:

docker run -i -t centos bash

[root@3f33e6aa7e2b /]# curl -sL https://rpm.nodesource.com/setup_6.x | bash -
[root@3f33e6aa7e2b /]# node yum install -y nodejs
[root@3f33e6aa7e2b /]# node -e "console.log('hello')"
[root@3f33e6aa7e2b /]# exit

退出容器后,拷贝容器 id c9b88498049c

docker commit -m '安装 node.js' -a 'haobing' 3f33e6aa7e2b haobing/nodejs-demo:latest

docker images

docker run haobing/nodejs-demo node -v

如果需要删除我们创建的镜像:

# 删除镜像前需要先删除与该镜像有关的容器
docker ps -a -l
docker rm 容器ID

# 删除镜像
docker rmi haobing/nodejs-demo

method2: 通过 Dockerfile 创建镜像

FROM centos
MAINTAINER haobing <hi@haobing.wang>
RUN curl -sL https://rpm.nodesource.com/setup_6.x | bash -
RUN yum install -y nodejs
docker build --tag haobing/nodejs-demo:latest /path/to/Dockerfile

把镜像发布到 dockerhub:

docker login

docker push haobing/ndoejs-demo

把镜像发布到 阿里云,参照阿里云最新文档即可。

数据卷

如果在容器里有一些你想长久保留的数据,我们可以把它放在一个 data volumes 里面。