Docker安装及基础命令
最近的工作
- php 学习,设计到LAMP的环境搭建。虽然是Mac上Apache 和 php 都是自带的,但是环境上还是不足,所以要用Docker。DAMP
- 爬虫ip 池搭建,发现别人造好的轮子上需要如redis,flask等环境。而且配置完了,最终也是要部署到服务器上去的,所以docker 是必不可少的
最近的工作,让我感到Docker的学习一定要提前了。因为只是先用起来,首先记录一些常用的命令,争取一天搞定。
# Docker 安装
我的主力机子是Mac,家里用旧电脑搭了 manjaro ,所以我需要两个安装教程
# Mac Docker安装
Mac 上配置docker最为方便
brew cask install docker
# 查看是否安装成功
docker info
docker -v
2
3
4
镜像加速 鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。还有 https://registry.docker-cn.com 是官方的中国站点。这些站点存储的是docker hub 的官方热门镜像,如果是私人的镜像,还是需要去美国站点下载。
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。
# Manjaro docker 安装
Manjaro 也拥有非常强大的包管理软件 pacman 和 yay 这里我们使用pacman,这里面的软件都是来自官方库
# 安装docker
$ sudo pacman -S docker
# 启动docker 服务
$ sudo systemctl start docker
# 查看docker服务状态
$ sudo systemctl status docker
# 设置docker开启启动服务
$ sudo systemctl enable docker
2
3
4
5
6
7
8
这里Linux 有一个比Mac 麻烦一点的地方,就是每次使用docker 需要用sudo 超级管理员权限
# 如果还没有 docker group 就添加一个
sudo groupadd docker
# 将自己的登录名(${USER} )加入该 group 内。然后退出并重新登录就生效啦
sudo gpasswd -aG ${USER} docker
# 重启 docker 服务
sudo systemctl restart docker
2
3
4
5
6
7
8
Linux 镜像加速
# 新建配置文件
$ sudo touch /etc/docker/daemon.json
# 添加国内站点
{
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
# 重启docker daemon
$ sudo systemctl restart docker
# 查看是否有修改成功
$ docker info
# 查看Register Mirrors的信息
Registry Mirrors:
https://registry.docker-cn.com/
http://hub-mirror.c.163.com/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Centos docker
# 使用脚本安装
docker 安装其实比较麻烦的,感谢 图灵:Docker开发指南
给的安装建议,我们可以直接用别人写好的脚本。
curl https://get.docker.com > install.sh
chmod +x install.sh
cat install.sh # 感兴趣的话,可以研究一下 shell 究竟写了啥
./install.sh
# 安装完了,记得启动 docker 服务
sudo systemctl start docker
2
3
4
5
6
# docker-compose(github 安装)
有条件的话,参考 docker官方教程 (opens new window) 这一种方法是官方推荐,但是鉴于中国墙,速度有可能非常感人
# 1. 从 github 上下载 docker-compose 命令
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 2. 赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 3. 验证是否安装成功
docker-compose --version
# docker-compose(pip 安装)
一般容易出问题的是 pip 的版本,如果是使用了conda作为包管理的话,可能主要注意pip的版本。我一开始是使用base环境的pip作下载,然后将安装的docker-compose 软连接至
/usr/local/bin
中
pip install docker-compose
# Docker 镜像使用
# 列出本地的镜像 images
$docker images
$docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 775349758637 2 weeks ago 64.2MB
# 标签的含义
- REPOSTITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
# 获取镜像
$docker pull ubuntu:13.10
# 查找镜像
$docker search ubuntu
- NAME:镜像仓库源的名称
- DESCRIPTION:镜像的描述
- OFFICIAL:是否docker官方发布
# 删除镜像
$docker rmi [image]
# 删除所有镜像
$docker rm $(docker images)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 创建并启动容器
docker run 是docker 命令中比较复杂的一个命令
$docker run <images> <command>
$docker run busybox echo hello world
$docker run Ubuntu:16.01 /bin/bash
$docker run -t-i Ubuntu:16.01 /bin/bash
-t-i: 交互式会话
-d: 后台方式
--rm: 运行完成后就会删除
$docker exec -ti <CONTAINER ID> /bin/bash
2
3
4
5
6
7
8
# 容器信息
# 下面所有的<CONTAINER ID> 都可以用容器的NAME 替代
# docker 很贴心的为我们的容器起了名字
# 列出运行容器
$docker ps
$docker ps -a # 包含停止但没有消失的容器
2
3
4
5
6
# 容器管理
# 停止正在运行的容器
$docker kill <CONTAINER ID>
$docker stop <CONTAINER ID>
# 两个命令都是会停止容器运行
# 停止没有消失的容器
$docker restart <CONTAINER ID>
$docker start <CONTAINER ID>
# 启动并进入交互界面
$docker start -it <CONTAINER ID> /bin/bash
# 删除无用的容器
$docker rm <CONTAINER ID>
# 删除所有已停止的容器
$docker rm -v $(docker ps -aq -f status=exited)
# 删除所有容器
$docker rm $(docker ps -a)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看docker输出
用于查看docker 的输出,对于没有交互(-ti)的容器的时候,需要用这个命令查看容器输出
$docker logs <CONTAINER ID>
# 文件拷贝
$docker cp <CONTAINER ID>:[/path/to/file]
# 参考资料
DockerCheatSheet (opens new window) Linux(Manjaro) -Docker 安装及基本配置 (opens new window)