linux运维-docker篇

1.docker命令

docker pull nginx           #拉取镜像,不指定版本默认最新

docker images              #查看容器镜像列表

docker rmi nginx:latest     #删除镜像

docker save -o nginx.tar nginx:latest    #打包镜像

docker load -i nginx.tar      #加载本地镜像

docker run -d --name nginx -p 80:80 nginx   #打开容器,并且起名字为nginx   

docker stop nginx    #停止容器

docker start nginx    #启动容器

docker logs nginx   #查看容器的nginx服务日志

docker logs -f nginx   #一直查看日志

docker exec -it nginx bash   #进入容器里面

docker exec -it mysql mysql -uroot -p   #此命令能直接访问mysql容器里面的mysql服务

docker rm nginx         #删除容器

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx   #创建容器并且创建数据卷,数据卷会在/var/lib/docker/volumes/html

docker run -d --name nginx -p 80:80 -v /html:/usr/share/nginx/html nginx   #或者直接写绝对路径,这样子会直接挂载到相应的位置

docker volume ls   #展示数据卷列表

docker volume inspect html   #展示html这个数据卷的信息

docker inspect nginx         #查看容器信息

2.数据卷 

 

docker volume create          #创建数据卷
docker volume ls              #查看所有数据卷
docker volume rm              #删除指定数据卷
docker volume inspect         #查看某个数据卷的详情
docker volume prune           #清除数据卷
-v 本地目录:容器内目录

3.dockerfile 

FROM           指定基础镜像                                  FROM centos:6
ENV            设置环境变量,可在后面指令使用                  ENV key value
COPY           拷贝本地文件到镜像的指定目录                    COPY ./xx.jar /tmp/app.jar
RUN            执行Linux的shell命令,一般是安装过程的命令       RUN yum install gcc
EXPOSE         指定容器运行时监听的端口,是给镜像使用者看的      EXPOSE 8080
ENTRYPOINT     镜像中应用的启动命令,容器运行时调用             ENTRYPOINT java -jar xx.jar

例如,要基于Ubuntu镜像来构建一个Java应用,其Dockerfile内容如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
ENV TZ=Asia/Shanghai
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 设定时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 指定项目监听的端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

基于jdk镜像构建java应用

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

4.构建镜像 

# 进入镜像目录
cd /root/demo
# 开始构建
docker build -t docker-demo:1.0 .

命令说明:

  • docker build : 就是构建一个docker镜像

  • -t docker-demo:1.0-t参数是指定镜像的名称(repositorytag

  • . : 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是.代表当前目录,也可以直接指定Dockerfile目录:

5.网络 

docker network create            创建一个网络
docker network ls                查看所有网络
docker network rm                 删除指定网络
docker network prune              清除未使用的网络
docker network connect           使指定容器连接加入某网络
docker network disconnect          使指定容器连接离开某网络
docker network inspect            查看网络详细信息

教学演示:自定义网络 

# 1.首先通过命令创建一个网络
docker network create hmall

# 2.然后查看网络
docker network ls
# 结果:
NETWORK ID     NAME      DRIVER    SCOPE
639bc44d0a87   bridge    bridge    local
403f16ec62a2   hmall     bridge    local
0dc0f72a0fbb   host      host      local
cd8d3e8df47b   none      null      local
# 其中,除了hmall以外,其它都是默认的网络

# 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名
# 这样该网络内的其它容器可以用别名互相访问!
# 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect hmall mysql --alias db
# 3.2.db容器,也就是我们的java项目
docker network connect hmall dd

# 4.进入dd容器,尝试利用别名访问db
# 4.1.进入容器
docker exec -it dd bash
# 4.2.用db别名访问
ping db
# 结果
PING db (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.056 ms
# 4.3.用容器名访问
ping mysql
# 结果:
PING mysql (172.18.0.2) 56(84) bytes of data.
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=1 ttl=64 time=0.044 ms
64 bytes from mysql.hmall (172.18.0.2): icmp_seq=2 ttl=64 time=0.054 ms

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值