1.端口映射
docker常用映射端口的方式进行部署, 例如: docker run -p 8080:80 -d nginx (把容器的80端口映射到宿主机的8080端口上)
2.独立IP
如果想要与宿主机在同一个网段中, 有独立的IP地址, 则可以使用 macvlan 技术来实现
(1) docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.2 -o parent=ens33 -o macvlan_mode=bridge net1
创建虚拟网络 net1 网段为192.168.0.0/24 网关为192.168.0.2 父网卡为ens33 macvlan的模式为bridge
(2) docker run --net=net1 --ip=192.168.0.133 --name f1 -dt ubuntu-debootstra
这样运行docker的时候则可以指定网络 net1 指定ip地址
2.1小记
(1) 使用 docker exec -it mynginx /bin/bash 在容器中执行命令 其中, -i:即使没有附加也保持STDIN 打开 -t:分配一个伪终端 mynginx容器名称或id, /bin/bash 执行的命令
(2) 使用 docker rmi [镜像名称:版本号] 来删除镜像, 如果镜像有容器在运行, 则需要先删除容器
3.打包构建镜像
将资源文件一以及Dockerfile放在同一目录下(或者使用-f指定Dockerfile文件位置), 然后运行 docker build -t [自定义镜像名称:标签] . (注意后面的点不要丢掉)
Dockerfile例子:
FROM openjdk:8u242-jdk MAINTAINER cccy0 ADD app.jar app.jar EXPOSE 80 ENTRYPOINT ["java","-Xmx300m","-Dserver.port=80","-jar","app.jar"]
如果想要把镜像push到远程仓库中, 则需要先给镜像一个tag:
docker tag cdf26cc71b50 registry.cn-shanghai.aliyuncs.com/cccy/openjdk-1.8:0.0.1
其中, cdf26cc71b50 为镜像的id, registry.cn-shanghai.aliyuncs.com为远程仓库url, cccy为命名空间, openjdk-1.8为仓库名称, 0.0.1为版本号
然后push到仓库中:
docker push registry.cn-shanghai.aliyuncs.com/cccy/openjdk-1.8:0.0.1