简介:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

安装

  • 删除原有老版本
$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get purge docker-ce
$ sudo rm -rf /var/lib/docker
  • 增加官方源
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  
$ sudo apt-get update
  • 安装
$ sudo apt-get install docker-ce
  • 配置外机可以访问(jenkins docker需要)
    修改配置文件/etc/default/docker
DOCKER_OPTS="-H tcp://0.0.0.0:6732 -H unix:///var/run/docker.sock"

重启docker服务

$ sudo service docker restart

安装docker-compose

$ curl -L https://github.com/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

标题

使用

  1. 查看images
$ sudo docker images
  1. 查看容器列表
$ docker ps -a	 				# 列出所有容器
$ docker ps	    				# 列出所有运行中的容器
$ docker ps -a -q	 				# 列出所有容器,只显示容器ID
  1. 查看容器详细信息
$ docker inspect <容器ID>|<容器NAME>
  1. 停止容器
$ docker stop <容器ID>             # 停止某一容器
# 停止某一镜像所有关联的容器
$ docker stop `docker ps -a  | grep <镜像NAME> | cut -d" " -f1`
$ docker stop `docker ps -q`     	# 停止运行中容器
$ docker stop `docker ps -a -q`  	# 停止所有的容器
  1. 删除容器
$ docker rm -f `docker ps -a -q`  # 删除所有容器
$ docker rm `docker ps -a -q`     # 删除非运行的容器
# 删除某一镜像所有关联的容器
$ docker rm `docker ps -a  | grep <镜像NAME> | cut -d" " -f1`
  1. 删除images
$ docker rmi -f <IMAGE ID>			# 通过image的id来指定删除谁
# 想要删除untagged images,也就是那些id为<None>的image的话可以用
$ docker rmi -f $(docker images | grep "^<none>" | awk '{print $3}')
$ docker rmi -f $(docker images -q)  # 要删除全部image的话
  1. 查看容器的底层信息
$ docker inspect 容器名
  1. 查看运行中的容器的Log
$ docker logs -f 容器名
  1. 登录进运行中的容器
$ docker exec -i -t 容器名 /bin/bash
  1. 清除系统磁盘空间
$ docker system prune
$ docker system prune -a
$ cd /var/lib/docker/containers/a32cac3fd457b*
其中a32cac3fd457b*为gitlab容器的id
$ rm -rf a32cac3fd457b*.log
  1. log太大导致磁盘空间不足的处理
$ vi /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {"max-size": "10m", "max-file": "3"}
}
$ service  docker restart
  1. docker swarm 启动失败, docker pull 成功
    添加–with-registry-auth
sudo docker stack deploy --with-registry-auth --compose-file=your-compose.yml your_stack

Docker Swarm

  1. 生成docker manager

  2. 加入group

  3. 设置docker daemon label

  4. 启动docker

  5. 查看信息
    docker stack ps YOUR_STACK_NAME
    docker service ls
    docker service ps YOUR_SERVICE_NAME

  6. 查看启动log
    journalctl -u docker.service | tail -n 50

  7. 查看服务log

  8. 通过ELK查看log

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐