0%

Docker 实践

Docker实践

Docker 安装

Docker 官网

Github Docker 源码

Windows系统安装,其他系统在同一页面自己寻找安装方式

Docker 镜像

显示本地镜像

1
root@root:~$ docker images

获取镜像

1
root@root:~$ docker pull <镜像名>

查找镜像

1
root@root:~$ docker search <镜像名>

更新镜像

更新前需先使用该镜像创建一个容器

1
root@root:~$ docker commit -m="<描述信息>" -a="<作者>" <容器唯一ID> <镜像名>

构建镜像

需要创建Dockerfile文件,文件中包含一组指令,指令格式如下

1
2
3
4
5
6
7
8
9
10
FROM    centos:6.7
MAINTAINER Fisher "fisher@sudops.com"

RUN /bin/echo 'root:123456' |chpasswd
RUN useradd evan
RUN /bin/echo 'evan:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
1
root@root:~$ docker build -t <目标镜像名> <Dockerfile所在目录>

设置镜像标签

1
root@root:~$ docker tag <镜像ID> <用户名称/镜像源名:标签>

删除本地镜像

1
root@root:~$ docker rmi <镜像名/镜像ID>

Docker 容器

运行容器

1
root@root:~$ docker run <镜像名> <执行命令>

-t:在新容器中指定一个伪终端或终端

-i:允许你对容器内的标准输入(STDIN)进行交互

1
root@root:~$ docker run -i -t ubuntu:15.10 /bin/bash

此时进入ubuntu的终端

通过exit或CTRL+D退出容器

-d:以进程方式运行的容器

1
root@root:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done

运行结束返回一串长字符,是对应每个容器的唯一容器ID

查看正在运行的容器

1
root@root:~$ docker ps

-a:显示包括已停止的容器

查看标准输出

1
root@root:~$ docker logs <容器ID或容器名称>

-f:显示实时输出

停止/开启/重启容器

1
2
3
root@root:~$ docker stop <容器ID>
root@root:~$ docker start <容器ID>
root@root:~$ docker restart <容器ID>

可能会出现的问题

时区问题

基于centos 的镜像,系统时区是由/etc/localtime 控制

基于debian 的镜像,系统时区由/etc/timezone 控制

可将系统内的/usr/share/zoneinfo/Asia/Shanghai 文件直接复制到以上位置修改时区

基于centos 镜像内,只修改/etc/localtime ,tomcat 取的仍然是UTC 时区,可配置catalina 启动文件的JAVA_OPTS参数,修正tomcat的时区

1
root@root:~$ docker ... -e JAVA_OPTS="-Duser.timezone=GMT+08" ...

在IntelliJ IDEA 中添加Docker扩展

下载Docker插件

直接在IntelliJ中的插件管理器中下载课鞥会下载出错,建议官网下载(选择适合自己IDEA的版本),选择导入本地插件,导入即可,重启IntelliJ

连接Docker

需要电脑中已经安装Docker并运行,IntelliJ打开Settings/Preferences,选择Build,Execution,Deployment,然后选择Docker,点击➕即可连接到本地Docker

浏览镜像和容器

点击工具栏中的Docker,选择Docker节点,点击运行可以查看Docker中的Containers(容器)和Images(镜像)

运行容器

可在已有的镜像上右键选择Create container创建容器,在弹出窗口配置完成后创建即可

更多详细操作

更多详细操作见插件官方文档