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入门学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Docker学习笔记走进docker的世界

docker学习笔记2 -- 资源限制

docker 学习笔记

Docker入门-学习笔记

Docker学习笔记-简介

docker入门学习笔记