Docker和docker-compose 日常使用

基本命令和使用方法

Posted by Sun Jianjiao on August 17, 2015

1. 安装

1.1 安装docker

1
2
3
4
5
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

$ sudo systemctl enable docker
$ sudo systemctl start docker

如果提示:

1
2
3
4
5
Failed to connect to bus: No such file or directory

原因:The problem now is that your init process PID 1 is /bin/bash, not systemd. Confirm with ps aux.

In addition to that you are missing dbus with would be the way to communicate. This is where your error message is coming from. But as your PID 1 is not systemd, it will not help to install dbus.

通过下面命令启动docer:

1
/etc/init.d/docker start

1.2 修改docker使用国内镜像

vim /etc/docker/daemon.json

1
2
3
4
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

重启docker:

1
sudo systemctl restart docker

安装docker-compose

pip安装docker-compose, 有时curl会失败。

1
2
3
4
5
6
7
8
9
10
# sudo apt-get update

# sudo apt-get install python-pip

# sudo pip uninstall docker-compose( 如果有老版的,先删除掉)

# sudo pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple/

# docker-compose --vesion

pip install的时候通过-i指定了阿里的镜像,这样速度更快,

2. 清理container,image与volume

经常pull新的镜像,会导致很多tag为none和不使用的镜像。docker提供了清理的命令。

1.杀死所有正在运行的镜像

1
docker kill $(docker ps -a -q)

2.清理所有停止运行的容器:

1
docker container prune

3.清理所有tag是(none)镜像:

1
docker image prune

4.删除所有镜像

1
docker rmi $(docker images -q)

5.清理所有无用数据卷:

1
docker volume prune

由于prune操作是批量删除类的危险操作,所以会有一次确认。 如果不想输入y来确认,可以添加-f操作。慎用!

6.清理停止的容器

1
docker rm -lv CONTAINER

3. docker-compose

3.1 域名解析

如果很多服务部署在linux上面,调试的服务部署在windows上,服务获取的地址就是windows的主机名,可以通过extra_hosts进行主机名和ip地址对的映射。

1
2
    extra_hosts:
      - "DESKTOP-VFA7NRS.mshome.net:192.168.88.66"

4. 参考文章

  • http://note.qidong.name/2017/06/26/docker-clean/