最近做的项目无法在windows下编译,于是决定搭建docker来编译项目,在此记录一下docker的使用。
首先是下载:
docker hub 在这里可以下载
安装
下载完成点击安装,安装结束会有这么三个图标:
第一个图标就是管理docker的了,在里面可以进行一些系统配置,设置内存大小等,类似虚拟机配置磁盘信息等等。运行中无法更改配置,需要先停掉。
快速启动,可点击第三个图标,进行命令操作(启动后会显示ip地址)。如果需要其他工具(如PuTTY、Xshell)连接到docker,可在工具命令行中输入对应的ip地址,默认用户名:docker,默认密码:tcuser 。
准备工作完成后,就可以使用了。
docker hub 上有大量的高质量镜像可用,从docker Registry 获取镜像的命令是 docker pull,如
docker pull ubuntu
(不指定版本,默认下载最新版)
运行
有了镜像后,以这个镜像为基础启动一个容器运行。以ubuntu
为例,如果我们打算启动里面的 bash
并且进行交互式操作的话,可以执行下面的命令。
$ docker run -it --rm ubuntu bash root@c8ea3a7f7b91:/# cat /etc/os-release NAME="Ubuntu" VERSION="16.04.2 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.2 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" VERSION_CODENAME=xenial UBUNTU_CODENAME=xenial root@c8ea3a7f7b91:/# exit exit
-it
:这是两个参数,一个是 -i
:交互式操作,一个是 -t
终端。我们这里打算进入 bash
执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm
:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm
。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm
可以避免浪费空间。
bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash
。
进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release
,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 16.04.2 LTS
系统。
最后通过 exit
退出这个容器。
再如:
docker pull jenkins
启动 jenkins server:
$ docker run -p 8078:8080 -p 50001:50000 --name my_jenkins -d jenkins
端口8078 和50001是外射端口, 8080是jenkins web端口,50000是slave需要的端口, -d中启动container并挂在后台运行
docker exec -it zguoyin_jenkins /bin/bash