docker 基础命令及实战

一、操作镜像

下载镜像

docker pull 镜像名   
docker pull hello-world

导入镜像文件

镜像导入(要在hello-world.tar.gz 文件所在目录下执行)

docker load < hello-world.tar.gz  

删除镜像文件

docker image rm hello-world

查看镜像

docker images

导出镜像文件

镜像导出(linux系统中的镜像文件下载到本地)

docker save  hello-world | gzip > hello-world.tar.gz  

运行镜像文件

启动容器

docker run hello-world 

二、操作容器

容器是基于镜像的,先得有镜像文件,才能启动!!

查看容器

docker ps -a (all的简写)

启动容器

命令:

docker run -it xxxx bash

1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。

docker run -it centos:7 bash

进入(exec)指定容器

docker exec -it 802 bash #802为容器id

从容器(Container)中退出(exit)

exit

停止运行的容器

docker container stop 199158  #199158为容器自己的id

重新启动容器

docker container restart 199158 #199158位容器自己的id

删除容器

docker  (container) rm -f(强制删除)  199158(容器的id)

清理所有处于终止状态容器

docker container prune

三、管理容器篇

在容器中管理数据主要有两种方式:
1.数据卷(Volumes)
2.挂载主机目录 (Bind mounts)

创建数据卷

docker volume create container-vol

查看所有数据卷

docker volume ls

查看指定 数据卷 的信息

docker volume inspect container-vol

启动挂载数据卷的容器

docker run -it --mount source=container-vol,target=/root centos:7 bash

docker run -it -v container-vol:/root centos:7 bash

说明:
-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录

删除数据卷(如果数据卷被容器使用则无法删除)

docker volume rm container-vol

清理无主数据卷

docker volume prune

挂载主机目录

docker run -it -v /usr/app:/opt/app centos:7 bash

说明:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。

查看挂载目录信息

docker inspect 91a #91a 为容器id

挂载在主机目录与挂载在数据卷的区别

挂载在主机目录:
优点:目录由用户自己管理,比较灵活
缺点:写入数据可能需要权限(假如用户没有给目录权限),需要重新赋权且目录的安全性比较低。

挂载在docker容器:
优点:由容器管理,即使容器坏掉也对文件没有影响,且写入数据的目录比较深,相对挂载在主机目录较安全。

四、docker查看日志的几个方式:

(1)docker logs --tail=1000 container( 容器名称) (查看容器前多少行的日志)(推荐)

(2)docker 容器启动后,可以进入以下位置查看日志(/var/lib/docker/containers/容器ID/容器ID-json.log)(进入容器内部查看日志)

(3)查看compose所有容器的运行日志

docker-compose -f docker-compose-app.yml logs -f

(4)查看compose下某个容器的运行日志

docker-compose -f docker-compose-app. yml logs -f<服务名>

(5) 也可以把compose的容器日志输出到日志文件里去,然后用tail -f随时查看

docker-compose -f docker-compose-app. yml logs -f >> myDockerCompose.log &

五、实战

1.需要准备JDK安装包,可以从此站点进行下载 华为下载源

2.创建 jdk-8 文件夹,将下载的 JDK 安装包放置在这个文件夹下,并创建 Dockerfile 文件

#ls
Dockerfile                            jdk-11.0.12_linux-x64_bin.tar.gz

Dockerfile:

#建立一个新的镜像文件,配置模板:新建立的镜像是以centos为基础模板
#因为jdk必须运行在操作系统之上
FROM centos:7.9.2009

# 维护者
MAINTAINER author <xxx@xx.com>

# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/jdk
RUN mkdir /usr/local/java

#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/jdk/
ADD bp-emsp-cpo.jar  /usr/local/java

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 设置环境变量
ENV JAVA_HOME /usr/local/jdk/jdk-11.0.12
ENV PATH $JAVA_HOME/bin:$PATH

# EXPOSE表示对外暴露的服务端口
EXPOSE 8005

# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 

# ENTRYPOINT中写的是你容器启动时候要执行的指令
ENTRYPOINT ["java","-jar","/usr/local/java/bp-emsp-cpo.jar"]

3.使用 docker build 创建镜像,-t 后面跟着的是 镜像名:版本,最后的点是指当前目录,比如Dockerfile中的add命令,复制jdk安装包到镜像中,就是复制当前目录的jdk安装包

docker build -t  emsp_cpo:11 .  #不要丢掉这里的点

可以看到我们自己制作的镜像

docker images
emsp_cpo               11           3832427f0da8   8 days ago      242MB

4.使用镜像创建容器
命令:

docker run -it xxxx bash

1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。

docker run -d --name emsp_cpo_11 -p 8004:8005 emsp_cpo:8		#-d 表示后台运行,-p用于指定端口映射,emsp_cpo:8为镜像文件名

查看复制进来的 jdk,看到是被自动解压的了

root@2e22ae0ee798:/usr/local/jdk# ls
jdk1.8.0_201

输出环境变量,就是 Dockerfile 中 ENV 描述的部分

root@2e22ae0ee798:/usr/local/jdk# echo $JAVA_HOME
/usr/local/jdk/jdk1.8.0_201
root@2e22ae0ee798:/usr/local/jdk# echo $CLASSPATH
.:/usr/local/jdk/jdk1.8.0_201/lib/dt.jar:/usr/local/jdk/jdk1.8.0_201/lib/tools.jar
root@2e22ae0ee798:/usr/local/jdk# echo $PATH
/usr/local/jdk/jdk1.8.0_201/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

5.从容器(Container)中退出(exit)

exit

6.----直接使用jdk11镜像命令启动

docker run -d --name emsp_cpo_11 -p 8088:8004 \ 
-v /docker/bp-emsp-cpo.jar:/usr/local/app.jar jdk11:11 \ 
java -jar -Xms256m -Xmx256m /usr/local/app.jar
docker ps  #查看运行的容器

运行完成。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值