docker学习总结-基础

docker info #验证docker安装是否成功

通过Dockerfile创建镜像

一、创建Dockerfile文件
Dockerfile相关命令
From <name> #必须指令基于的基础镜像
MAINTAINER <author> <name> #设置该镜像作者
RUN <command> #在shell或者exec的环境下执行的命令
ADD <source> <destination> #复制文件指令
ENV <key> <value> #设置环境变量
COPY <src> <dest> #复制本地主机的镜像到容器的指定路径中
USER <U ID> #指定运行容器时的用户名或UID
WORKDIR /path/to/workdir #指定RUN/CMD和ENTRYPOINT命令的工作目录
EXPOSE <port> #指定docker容器在运行时监听的端口
CMD <command> #docker容器默认的执行命令,只有最后一个指令有效

示例:
FROM ubuntu:14.04
MAINTAINER anenda "anenda@anenda.com"
RUN apt-get update
RUN mkdir -p /var/platform
ADD jdk-8u161-linux-x64.tar.gz .
ENV JAVA_HOME=./jdk1.8.0_161
ENV JRE_HOME=./jdk1.8.0_161/jre
ENV CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
RUN java -version
COPY anenda-platform.1.0.jar .
CMD ["java","-jar","anenda-platform.1.0.jar"]


二、创建docker镜像

docker build -t <images-name> /root/chen
PS:镜像名称只能取字符[a-z]和数字[0-9]!!!-t:在新容器内指定一个伪终端或终端。<images-name>是生成镜像的标签,可以自己命名。/root/chen是Dockerfile的路径。

docker images #查看生成的镜像
docker rmi <images-name> #移除images-name镜像
docker search <images-name> #查找images-name镜像
docker pull <images-name> #下载创建images-name镜像
docker push <images-name> #上传images-name镜像


三、生成docker容器

docker run -p 8000:8000 --name websocket chen/web
PS:8000:8000绑定docker开放的端口和映射到主机的端口。websocket是生成docker容器的名称,可以自己命名。chen/web是docker镜像的名称。-p : 是容器内部端口绑定到指定的主机端口。--name: 是容器名称。

docker ps -a #查看所有的docker容器
docker ps #查看正在运行的docker容器
docker start <name> #启动name容器
docker restart <name> #重新启动name容器
docker stop <name> #停止name容器
docker rm <name> #删除name容器
docker port <name/ID> #查看容器name/ID端口映射
docker commit <name> <images-name> #将name容器状态保存为<images-name>镜像
docker logs <name> #查看name容器日志


四、更新镜像

镜像创建好后,可能因为业务的需要,要加入某些功能,或者是部署自己的项目,就需要更新已经创建好的镜像。

步骤1:docker start <name> #启动name容器

步骤2:docker exec -ti <name/ID> /bin/bash #进入更新状态。name是容器名称,也可以是容器ID

步骤3:根据自己的需要,安装自己所需要的软件和部署自己的项目

步骤4:exit #退出更新和部署状态

步骤5:docker commit -m="更新镜像" <ID> <images-name> #-m:提交的描述信息。-a: 指定镜像作者。ID:容器ID。images-name: 指定要创建的目标镜像名


五、创建docker下macVLAN网络环境

步骤1:创建macVLAN网络

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.254 -o parent=eth0 -o macvlan_mode=bridge eth0_1 #eth0_1是网络名称。subnet是网段。gateway是网关

步骤2:创建docker容器

docker run -id --net <eth0_1> --ip <192.168.1.7> --name <test001> <web> <java -jar anenda-platform.1.0.jar> #eth0_1是网络名称。ip是设置要启用的IP。name是设置容器的名称,可以自定义。web是镜像名称。java -jar anenda-platform.1.0.jar是容器命令。

docker exec <eth0_1> ping <eth0_1> #测试网络联通性,eth0_1是网络名称。

docker inspect <name> | grep IPAddress #获取容器name的IP地址

iptables -t nat -A DOCKER -p tcp --dport 8091 -j DNAT --to-destination 192.168.1.187:8090 #将容器的8090端口映射到docker主机的8091端口

 

posted @ 2018-02-08 15:42  Chen.HJ  阅读(161)  评论(0)    收藏  举报