docker入门指南

docker可以安装在windows/mac os/linux系统上,目前最新版本为:1.12.0

安装

  • windwos: 需要机器要能支持VT-x虚拟化技术,下载地址 https://download.docker.com/win/stable/InstallDocker.msi 安装完成后会在桌面创建两个图标,运行其中一个(boot2docker)启动docker引擎,等待初始化到100%完成,然后运行另外一个(docker terminal),在其中执行docker命令即可
  • mac os: 下载地址 https://download.docker.com/mac/stable/Docker.dmg
  • linux 在终端执行:curl -SL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - 等待安装完成,然后添加开机启动chkconfig docker on,启动docker执行service docker start

镜像

docker镜像可以看作是类似于操作系统镜像一样的东西,你可以在镜像中安装你的应用,以及所需要的各种依赖库,然后将该镜像共享给其他人,其他人拿到镜像后,通过docker启动你的应用,无需再次安装各种依赖软件。docker镜像类似于操作系统镜像,担比操作系统镜像更轻量,构建更快速。

容器

镜像只是一个文件放在那里,当启动它后,就会创建并运行一个容器,运行起来的容器就相当于一个运行着的操作系统,此时你就可以进入容器安装软件,执行各种操作了。一个镜像可以启动多个容器,它们互不干扰。可以把镜像比做编程语言里面的,容器就是类的实例。容器有运行和停止两种状态。

Hello world

//从官方仓库下载mysql镜像
docker pull centos
//查看本地拥有的镜像
docker images   
//启动centos镜像
docker run centos
//查看运行着的容器,加-a查看所有的容器
docker ps
fuxiaodeiMac:~ fuxiao$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
227dff6338c1        mysql               "docker-entrypoint.sh"   21 seconds ago      Up 20 seconds       3306/tcp            zen_sammet
//停止容器
docker stop 227dff6338c1

docker常用命令:http://www.jianshu.com/p/50134af6f809

创建镜像

1. 修改已有镜像

启动一个已有镜像,然后进入容器,安装自己需要的软件库,然后exit推出镜像,执行

docker commit -m "描述" -a "SongCF" 0b2616b0e5a8 songcf/mysql:v2
//-a 镜像作者信息
//0b2616b0e5a8 刚才运行的容器id
//songcf/mysql:v2 要创建的镜像的名称tag

2. 利用 Dockerfile 来创建镜像

需要先熟悉dockerfile如何编写
参考:https://yeasy.gitbooks.io/docker_practice/content/dockerfile/basic_structure.html

容器间网络通信

这里仅描述启动容器的时候指定端口该方法。

//-p ip:hostPort:containerPort
//-p ip::containerPort
//-p hostPort:containerPort
例如:
docker run -p 3306:3306 mysql
//启动mysql容器时,将容器的3306端口绑定到本机的3306端口,其它应用访问本机3306端口即访问到容器中的mysql

数据卷

在主机与容器间共享数据,类似共享文件夹,启动容器时添加-v参数,如:

docker run -v /root/data/:/songcf/data/ centos
//将本机的/root/data/目录挂载到centos容器的/songcf/data/目录,在centos容器中操作/songcf/data/目录,就相当于更改了主机上的/root/data/目录

多个容器可以挂载主机上的同一目录,实现容器间目录共享。

常见问题

1. pull镜像速度太慢

添加国内代理,例如使用aliyun,登录 https://dev.aliyun.com/ 选择一个镜像,点击 点击获取镜像加速器地址(须注册并登录阿里云),然后会得到一个网址,类似 https://xxxxx.mirror.aliyuncs.com,接下来将该地址添加到docker配置文件中,以centos系统为例:

//打开配置文件
vi /etc/sysconfig/docker
//在options中添加镜像加速地址(注意是添加)
OPTIONS='--registry-mirror=https://xxxxx.mirror.aliyuncs.com'

然后执行service docker restart重启docker

2. 无法访问私有仓库

目前我门的私有仓库为v2版本,且没有添加证书,客户端访问默认走https,需要在配置文件中指定仓库地址使用http,而非https

//打开配置文件
vi /etc/sysconfig/docker
//在options中指定私有仓库地址不使用https(注意是添加)
OPTIONS='--insecure-registry 192.168.2.55:5000'

然后执行service docker restart重启docker

3. 共享镜像

自己创建镜像后,可以通过docker push到仓库上供他人使用,但是当仓库再远端,你要和旁边的同时共享镜像,自己push,然后他再pull可能会有点慢,所以此时可以导出镜像文件给它使用:

//到处centos镜像到xxx.tar文件
docker save -o xxx.tar centos
//然后xxx.tar传给同事导入即可
docker load -i xxx.tar

// ps: save/load镜像导入导出,export/import容器导入导出

入门电子书推荐:
https://yeasy.gitbooks.io/docker_practice/content/index.html

你可能感兴趣的:(docker入门指南)