MacOS
- MacOS 我们可以使用 Homebrew 来安装 Docker。
- 下载docker桌面版https://www.docker.com/get-started
- 鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,需要配置国内镜像地址
- 阿里云:https://<你的ID>.mirror.aliyuncs.com,如:https://zjy67cgc.mirror.aliyuncs.com
- 阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中“镜像加速器”标签就可以看到你的专属地址了:
- 网易:https://hub-mirror.c.163.com/
- 七牛云加速器:https://reg-mirror.qiniu.com
{ "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ "https://zjy67cgc.mirror.aliyuncs.com" ] }
- 下载镜像:https://docker.alibaba-inc.com/#/imageList
- docker pull reg.docker.alibaba-inc.com/iot-warp/node-red:1.2.2
- 下载服务:http://gitlab.alibaba-inc.com/haas-studio/ms-studio
- 启动docker
- docker run -d -i -t --rm --name="ms-studio" -p 50002:1880 -p 52202:22 -v /Users/dan.wu/work/study/node-red/ms-studio:/data reg.docker.alibaba-inc.com/iot-warp/node-red:1.0.1
Ubuntu
2种安装方式都可以
- 自动安装:
- curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
- curl -sSL https://get.daocloud.io/docker | sh
- 手动安装(这里是中国科技大学的源为例)
- 安装依赖包:sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- 添加 Docker 的官方 GPG 密钥:curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
- 设置稳定版仓库:sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable"
- 更新包索引:sudo apt-get update
- 卸载旧版本(如之前安装过可选):sudo apt-get remove docker docker-engine docker.io containerd runc
- 安装最新版本的 Docker Engine-Community和containerd:sudo apt-get install docker-ce docker-ce-cli containerd.io
- 验证环境:
$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
- 镜像加速
对于使用 systemd 的系统(Ubuntu16.04+、Debian8+、CentOS7)
请访问阿里云线上地址 https://cr.console.aliyun.com/#/docker/booster 获取你的加速器
请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件): $ sudo /etc/docker/daemon.json 添加:{"registry-mirrors":[ "https://reg-mirror.qiniu.com/", "https://<你的阿里云id>.mirror.aliyuncs.com" ]} 重新启动服务: $ sudo systemctl daemon-reload $ sudo systemctl restart docker
- 给docker添加sudo权限
$ sudo groupadd docker $ sudo gpasswd -a <你的用户名> docker $ sudo service docker restart 退出shell 重新进入即可
Docker常用命令
docker run用来运行一个容器
docker run ubuntu:15.10 /bin/echo "Hello world"
- docker: Docker 的二进制执行文件。
- run: 与前面的 docker 组合来运行一个容器。
- ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令
docker run -i -t ubuntu:15.10 /bin/bash
- -t: 在新容器内指定一个伪终端或终端。
- -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
- -d: 在新容器运行在后台。
docker ps 来查看容器进程:
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的镜像。
- COMMAND: 启动容器时运行的命令。
- CREATED: 容器的创建时间。
- STATUS: 容器状态。
-
- created(已创建)
- restarting(重启中)
- running 或 Up(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
docker logs 查看容器内的标准输出
docker images 来列出本地主机上的镜像。
docker pull 下载容器镜像,会根据你配置的镜像仓库地址来下载镜像
阿里云镜像仓库: https://docker.alibaba-inc.com/#/imageList
阿里云容器镜像服务:https://cr.console.aliyun.com/
如: docker pull reg.docker.alibaba-inc.com/iot-warp/node-red:1.2.2
有时候报latest not found: manifest unknown: manifest unknown,说明找不到latest版本,请带上版本号
制作docker镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1.commit方式:基础镜像运行生成容器,容器中安装需要工具,提交镜像。
- 登录阿里云容器镜像服务
-
- 创建镜像仓库,并使用本地代码源(即通过本地上传的方式,上传镜像)
- 在“访问凭证”标签里设置固定密码
- 先用docker run运行一个基础的容器镜像,如ubuntu:16.04
-
- 在容器里做一些更新:如安装一些工具,软件包,下载一些源代码
- exit命令退出容器
- docker ps -a查看刚才修改过的容器,找到id,如e218edb10161
- docker commit -m="has update" -a="shenping.sp" e218edb10161 runoob/ubuntu:v2
-
- -m: 提交的描述信息
- -a: 指定镜像作者
- e218edb10161:容器 ID
- runoob/ubuntu:v2: 指定要创建的目标镜像名
- 使用docker imags查看imageID
- 将镜像推送到Registry:
-
- $ sudo docker login --username=iotx_develop_hacklab registry.cn-shanghai.aliyuncs.com
- $ sudo docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/haas-studio/codebase:[镜像版本号]
- $ sudo docker push registry.cn-shanghai.aliyuncs.com/haas-studio/codebase:[镜像版本号]