Docker使用备忘

这几天稍微接触了一下了Docker技术,第一感觉真的非常方便好用,相比自己下载一堆.tar.g软件,然后配置.简单记录一下Docker的基本命令.


Docker

  • Docker是一中轻量级的容器技术**,Docker直接运行在当前操作系统之上**,而不是运行在虚拟机中,但同时也实现了虚拟机技术的资源隔离.性能远远高于虚拟机技术.
  • Docker支持将软件编译成镜像(image).在此镜像中做好对软件的各种配置.然后发布这个镜像,使用者都可以运行这个镜像.运行中的镜像称为容器(container); 容器的启动非常快.
  • 使用Docker的云计算平台就是使用Docker来实现不同功能以及程序之间的隔离.
  • 很多软件都已经有了Docker镜像,只需下载Docker镜像,然后运行镜像就可以快速获得已经做好配置可以运行的软件.Docker仓库.自己Ubuntu的仓库使用阿里云的源还是挺快的.

安装

1
2
3
4
5
6
7
# ubuntu 不一定保证是最新版本,可以参考官网配置.
$ sudo apt-get update
$ sudo apt-get docker.io

# 可以配置docker组来避免每次输入都是sudo docker xxx
darcy@darcy-ubuntu:~$ sudo docker -v
Docker version 1.12.6, build 78d1802

docker命令

docker镜像检索

  • sudo docker search image-name
1
$ sudo docker search redis

镜像下载

  • sudo socker pull image-naem
1
$ sudo docker pull nginx

镜像列表

  • sudo docker images
  • REPOSITORY – 镜像名
  • TAG – 软件版本
  • Image ID – 当前镜像的唯一名称
  • CREATED – 当前镜像的创建时间
  • VIRTUAL SIZE – 当前镜像的大小
1
2
3
4
5
6
7
8
$ sudo docker images
darcy@darcy-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 3.2.10 c6988031bc47 6 days ago 98.96 MB
rabbitmq 3-management f10fce4f4bb8 11 days ago 123.6 MB
rabbitmq latest bad16bdb4e74 11 days ago 123.6 MB
mongo latest 6833171fe0ad 12 days ago 359.1 MB
hello-world latest 1815c82652c0 7 weeks ago 1.84 kB

删除镜像

  • sudo rmi Image-ID
1
$ sudo docker rmi c6988031bc47

删除所有镜像

  • sudo docker rmi $(docker images -q)
1
$ sudo docker rmi $(docker images -q)

运行容器

  • --name为容器指定名字
  • -d 容器在后台运行
  • sudo docker run --name container-name -d image-name
1
$ sudo docker run --name my-redis -d redis:3.2.10

容器列表

  • sudo docker ps
  • CONTAINEER ID – 启动时生成的ID;
  • IMAGE – 容器使用的镜像
  • NAMES – 给容器定义的名字
  • 其他就是字面意思.
1
2
3
4
5
6
darcy@darcy-ubuntu:~$ sudo docker run --name port-redis-2 -p 6378:6379 -d redis:3.2.10
1636aae68d9dbf6848b92d8a8998862a35f9750dd8ac0217bdf1d1b78e6d910f

darcy@darcy-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1636aae68d9d redis:3.2.10 "docker-entrypoint.sh" 8 seconds ago Up 4 seconds 0.0.0.0:6378->6379/tcp port-redis-2

查看运行和停止状态的容器

  • sudo docker ps -a
1
$ sudo docker ps -a

停止容器

  • sudo docker stop container-name/container-id
1
$ sudo docker stop port-redis-2

启动容器

  • sudo docker start container-name/container-id
1
$ sudo docker start port-redis-2

端口映射

  • Docker容器中运行的软件所使用的端口,在本机和本机的局域网是不能访问的,所以需要将Docker容器中的端口映射到当前的主机上,这样本机和本机所在的局域网就可以访问了.
  • Docker的端口映射通过-p参数来实现.
1
$ sudo docker run --name port-redis-2 -p 6378:6379 -d redis:3.2.10

删除容器

1
2
3
4
5
# 删除单个容器
$ sudo docker rm container-di

# 删除所有容器
$ sudo docker rm $(docker ps -a -q)

查看容器日志

  • sudo docker logs container-name/container-id
1
$ sudo docker logs port-redis-2

自己安装的镜像

1
2
3
4
1970  sudo docker pull redis:3.2.10 # 指定版本,latest一直获取失败.
1971 sudo docker pull mongo
1977 sudo docker pull rabbitmq
1978 sudo docker pull rabbitmq:3-management

参考