docker入门学习笔记
Posted *^O^*—*^O^*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker入门学习笔记相关的知识,希望对你有一定的参考价值。
docker基础操作入门笔记
文章中几乎所有的写容器Id的地方,都可以使用容器名称来写命令
镜像操作
列出镜像列表
docker images
获取新的镜像
这里可以通过==:==来决定获取那一版本,不指定则是最新的
docker pull ubuntu:13.10
docker pull ubuntu
查找镜像
docker search ubuntu
设置镜像标签方便查找使用
docker tag 镜像Id 镜像名称:标签名
可以看到在执行完成之后,同一个镜像有了两个标签一个是latest 一个是tag
删除镜像
在删除镜像之前需要删除容器才可以删除
docker rmi ubuntu:18.04
用自己jar制作镜像
首先需要在一个文件夹下存放Dockerfile文件和自己的jar吧
dockerfile写入如下内容
FROM openjdk:8-jdk-alpine
MAINTAINER zxf
ADD get-gitlab-0.0.1-SNAPSHOT.jar wk.jar
EXPOSE 4000
ENTRYPOINT ["java","-jar","wk.jar"]
这里端口是我程序内配置文件指定的端口,ADD 后面是我们的jar名,wk.jar是我起的别名
docker build -t test-test .
在当前文件加执行上面的操作,就会生成一个叫test-test的镜像
容器操作
启动容器
这里-it 和-itd 后者是后台运行的意思,前者输完会直接进入容器中
docker run -itd --name=ubuntu-test ubuntu /bin/bash
这里因为没有指定端口,所以后面的ports底下为空,这里可以将好几个容器的端口开放,然后对应一个内部的服务端口
启动已停止运行的容器
docker start 容器Id
停止容器
docker stop 容器Id
进入容器
这里有两中方式,我这里只推荐一种,下面这两条命令是一样的,不过有时上面这个命令进不去容器,就可以使用下面的命令
docker exec -it 容器Id /bin/bash
docker exec -it 容器Id /bin/sh
退出容器只需要输入exit,就可以了
打印容器日志
两者都可以打印日志,第二个命令执行,就会一直停留在日志打印界面,对于快速定位问题很有帮助
docker logs gitlab
docker logs gitlab -f
删除容器
docker rm -f 容器id
将容器打成镜像
docker commit -m "说明文字(可不写)" -a "作者(可不写)" [CONTAINER ID] [自己起的容器名]
数据卷操作(挂载)
为什么要挂载
因为容器启动后产生的数据,要是第二次再启动就会损失掉数据,为了让docker容器在运行时的数据得带持久化,就需要挂载,就是将docker容器的某一个目录和宿主机上的某一个目录映射起来,可以说就是两者有操作同一个数据,每次容器重启的时候,容器会自动将挂载目录下的数据同步到docker内部
如何挂载
最好的选择就是在容器启动的时候挂载,容器一旦跑起来后,再要去挂载会很麻烦
docker run -itd --name=[容器名] -v /root/data:/root/data [镜像名]
这里使用==-v== 关键字来指定,前面是宿主机的路径,后面是容器内部路径,我为了方便查找,两个路径写的一样,这里可以写成不一样的
另外需要注意的是,mysql的挂载需要指定目录,因为MySQL的数据保存在/var/lib/mysql 下,这个是默认的,为了避免麻烦最好直接挂载该目录
下面是一条启动MySQL容器并且挂载并且设置自启动的命令
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=novastar -v /root/workspace/data/mysql:/var/lib/mysql --restart=always mysql
其他
为了防止宿主机断电,docker服务能够跑起来,最好的处理方式设置docker容器开机自启,容器也要设置开机自启
查询所有是否开机自启
systemctl list-unit-files | grep enable
docker设置开机自启
systemctl enable docker.service
容器的自启可以在创建的时候,或者对于已存在的容器设置自启
docker run --restart=always 容器id 或 容器名称
docker update --restart=always 容器id 或 容器名称
取消容器自启
docker update --restart=no 容器id 或 容器名称
时间同步问题
执行下面操作,就可将宿主机的时间和容器的时间同步,所以发现时间有问题,首先需要检查宿主机时间是否正确,接着可是使用下面的命令,将docker容器的时间就和宿主机同步了
docker cp /usr/share/zoneinfo/Asia/Shanghai mysql:/etc/localtime
jar包的运行
通过下面两条命令就可以在宿主机执行容器里的jar包,如下,但是需要配置容器对宿主机的免密 ==-Duser.timezone=GMT+08 ==指定jar包的运行的时间,有这句话,就不会有时间不对应了
ssh -p 8801 root@172.16.80.60 'nohup java -jar -Duser.timezone=GMT+08 /root/workspace/data/project/XXXX.jar >platform.log 2>&1 &'
ssh -p 8801 root@172.16.80.60 'tail -f ~/platform.log -n300'
以上是关于docker入门学习笔记的主要内容,如果未能解决你的问题,请参考以下文章