docker命令

dockerfile文件:解决图形验证码空指针异常

#FROM java:8
FROM openjdk:8-jdk-alpine
RUN set -xe \
&& apk --no-cache add ttf-dejavu fontconfig
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE xxxx端口号
ENTRYPOINT ["java","-jar","/app.jar"]

dockerfile文件编写步骤:

1. 设置基础环境

2. 配置运行文件

3. 曝露对外端口

4. 设置启动命令

打包镜像:docker build --build-arg JAR_FILE=zgj.jar -t zgj:v1 . (最后一个点代表当前目录,不要忘了点)

查看镜像:docker images

运行容器:docker run -i --name=zgj -p 宿主机端口:容器端口 zgj:v1

docker 常用指令

  容器指令:

    systemctl restart docker 重启docker

    docker run -i 镜像名称:标签 运行容器(默认是前台运行)

    docker ps 查看运行的容器

    docker ps -a 查询所有容器

    1)常用的参数: -i:运行容器

      -d:后台守方式运行(守护式)

      --name:给容器添加名称

      -p:公开容器端口给当前宿主机

      -v:挂载目录

    docker exec -it 容器ID/容器名称 /bin/bash 进入容器内部

    docker start/stop/restart 容器名称/ID 启动/停止/重启容器

    docker rm -f 容器名称/ID 删除容器

  2)镜像指令:

    docker search 镜像名称 搜索镜像

    docker pull 镜像名称 拉取镜像

    docker images 查看本地所有镜像

    docker rmi -f 镜像名称 删除镜像

    docker pull openjdk:8-jdk-alpine 拉取镜像

Dockerfile常见命令

  MAINTAINER user_name 声明镜像的作者

  ENV key value 设置环境变量 (可以写多条)

  RUN command 编译镜像时运行的脚本(可以写多条)

  CMD 设置容器的启动命令

  ENTRYPOINT 设置容器的入口程序

  ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复 制后自动解压

  COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压

  WORKDIR path_dir 设置工作目录

  ARG 设置编译镜像时加入的参数

  VOLUMN 设置容器的挂载卷

docker容器之间相互访问

01
docker容器之间如何互相访问?通过docker network 命令

 

Copy

Commands: create Create a network(创建一个网络) connect Connect a container to a network(将容器连接至网络) disconnect Disconnect a container from a network(将容器从某网络断开) inspect Display detailed information on one or more networks(显示一个或多个网络的详细信息) ls List networks(列出所有网络) rm Remove one or more networks(删除一个或多个网络)

操作步骤

1.查看当前的网络

 

Copy

[root@host ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3dd4643bb158 bridge bridge local 748b765aca52 host host local 4d59a0cd3ff4 none null local

2.创建一个bridge的网络(如不加参数,默认创建的就是bridge类型的网络)

 

Copy

[root@host ~]# docker network create my_net a80ae06b65918f5e653faae643af6dbcbe2f4607053211a0528d24f62e46f649 [root@host ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3dd4643bb158 bridge bridge local 748b765aca52 host host local a80ae06b6591 my_net bridge local 4d59a0cd3ff4 none null local

3.查看该网络的详细信息

 

Copy

[root@host ~]# docker network inspect my_net [ { "Name": "my_net", "Id": "a80ae06b65918f5e653faae643af6dbcbe2f4607053211a0528d24f62e46f649", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1/16" } ] }, "Internal": false, "Containers": {}, "Options": {}, "Labels": {} } ]

4.启动容器时指定网络

注:需要使用–name为容器指定一个名字

 

Copy

[root@host ~]# docker run --name boot1 -d --network my_net bbacc5de5941 7ca3834887355e3ecb4a2ae484694c2dbc0944f12e23498fd4b03237c4c35632

5.将已启动的应用连接至网络

注:需要使用–name为容器指定一个名字

 

Copy

[root@host ~]# docker run --name boot2 -d b8ea3d603e18 d281bfeb900325724968ec89f7e4623f9add844d101cf4773f3b14c36253f301 [root@host ~]# docker network connect my_net boot2

6.再启动一个centos7容器,同时连接到该网络

 

Copy

[root@host ~]# docker run -it --name my_centos --network my_net centos:7 [root@b4f27e7db4c0 /]

7.在centos7容器中访问另外的两个容器。

注:这里boot1、boot2是两个spring-boot项目,端口均为8080。

 

Copy

[root@b4f27e7db4c0 /]# ping -c 4 boot1 PING boot1 (172.18.0.2) 56(84) bytes of data. 64 bytes from boot1.my_net (172.18.0.2): icmp_seq=1 ttl=64 time=0.055 ms 64 bytes from boot1.my_net (172.18.0.2): icmp_seq=2 ttl=64 time=0.089 ms 64 bytes from boot1.my_net (172.18.0.2): icmp_seq=3 ttl=64 time=0.097 ms 64 bytes from boot1.my_net (172.18.0.2): icmp_seq=4 ttl=64 time=0.084 ms --- boot1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3111ms rtt min/avg/max/mdev = 0.055/0.081/0.097/0.017 ms [root@b4f27e7db4c0 /]# ping -c 4 boot2 PING boot2 (172.18.0.3) 56(84) bytes of data. 64 bytes from boot2.my_net (172.18.0.3): icmp_seq=1 ttl=64 time=0.065 ms 64 bytes from boot2.my_net (172.18.0.3): icmp_seq=2 ttl=64 time=0.090 ms 64 bytes from boot2.my_net (172.18.0.3): icmp_seq=3 ttl=64 time=0.078 ms 64 bytes from boot2.my_net (172.18.0.3): icmp_seq=4 ttl=64 time=0.101 ms --- boot2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3085ms rtt min/avg/max/mdev = 0.065/0.083/0.101/0.016 ms [root@b4f27e7db4c0 /]# curl http://boot1:8080/ Hello Docker World[root@b4f27e7db4c0 /]# [root@b4f27e7db4c0 /]# curl http://boot2:8080/ Hello Docker helloaaasdfasdf[root@b4f27e7db4c0 /]# [root@b4f27e7db4c0 /]#

8.查看网络详细信息

注:按组合键ctrl+P+Q退出my_centos容器

 

Copy

[root@b4f27e7db4c0 /]# [root@host ~]# [root@host ~]# docker network inspect my_net [ { "Name": "my_net", "Id": "a80ae06b65918f5e653faae643af6dbcbe2f4607053211a0528d24f62e46f649", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1/16" } ] }, "Internal": false, "Containers": { "7ca3834887355e3ecb4a2ae484694c2dbc0944f12e23498fd4b03237c4c35632": { "Name": "boot1", "EndpointID": "10a5dad08d25fb5fbefdf3240b8b94edcf76e6e40ef8f1bb8fe029d288338e75", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" }, "b4f27e7db4c01105ec2d59b34cf7971929d4c8563c3d3c4b6ff8bb61d031fe34": { "Name": "my_centos", "EndpointID": "9cbb7f1c9747787e70c0f94cc4924c987b084553426fbfa2b62713c178614498", "MacAddress": "02:42:ac:12:00:04", "IPv4Address": "172.18.0.4/16", "IPv6Address": "" }, "d281bfeb900325724968ec89f7e4623f9add844d101cf4773f3b14c36253f301": { "Name": "boot2", "EndpointID": "19b58907f5209b98f316c83dddba08c0eacc38a677162767250dbdf4fbb9f3fa", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] [root@host ~]#

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马良神笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值