跳到主要内容

Docker安装及基础命令

最近的工作

  • php 学习,设计到LAMP的环境搭建。虽然是Mac上Apache 和 php 都是自带的,但是环境上还是不足,所以要用Docker。DAMP
  • 爬虫ip 池搭建,发现别人造好的轮子上需要如redis,flask等环境。而且配置完了,最终也是要部署到服务器上去的,所以docker 是必不可少的

最近的工作,让我感到Docker的学习一定要提前了。因为只是先用起来,首先记录一些常用的命令,争取一天搞定。

Docker 安装

我的主力机子是Mac,家里用旧电脑搭了 manjaro ,所以我需要两个安装教程

Mac Docker安装

Mac 上配置docker最为方便

这里参考 菜鸟教程:MacOS Docker 安装

brew cask install docker 
# 查看是否安装成功
docker info
docker -v

镜像加速 鉴于国内网络问题,后续拉取 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

这里Linux 有一个比Mac 麻烦一点的地方,就是每次使用docker 需要用sudo 超级管理员权限

# 如果还没有 docker group 就添加一个
sudo groupadd docker

# 将自己的登录名(${USER} )加入该 group 内。然后退出并重新登录就生效啦
sudo gpasswd -aG ${USER} docker

# 重启 docker 服务
sudo systemctl restart docker

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/

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

docker-compose(github 安装)

有条件的话,参考 docker官方教程 这一种方法是官方推荐,但是鉴于中国墙,速度有可能非常感人

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)

创建并启动容器

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

容器信息

# 下面所有的<CONTAINER ID> 都可以用容器的NAME 替代
# docker 很贴心的为我们的容器起了名字
# 列出运行容器
$docker ps
$docker ps -a # 包含停止但没有消失的容器

容器管理

# 停止正在运行的容器
$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)

查看docker输出

用于查看docker 的输出,对于没有交互(-ti)的容器的时候,需要用这个命令查看容器输出

$docker logs <CONTAINER ID>

文件拷贝

$docker cp <CONTAINER ID>:[/path/to/file]

参考资料

DockerCheatSheet Linux(Manjaro) -Docker 安装及基本配置