docker入门学习笔记

docker基础操作入门笔记

  • 镜像操作
  • 容器操作
  • 数据卷操作(挂载)
    • 为什么要挂载
    • 如何挂载
  • 其他
    • docker设置开机自启
    • 时间同步问题
    • jar包的运行

文章中几乎所有的写容器Id的地方,都可以使用容器名称来写命令

镜像操作

列出镜像列表

docker images

docker入门学习笔记_第1张图片

获取新的镜像
这里可以通过==:==来决定获取那一版本,不指定则是最新的

docker pull ubuntu:13.10

docker入门学习笔记_第2张图片

docker pull ubuntu

docker入门学习笔记_第3张图片

查找镜像

docker search ubuntu

docker入门学习笔记_第4张图片
设置镜像标签方便查找使用

docker tag {镜像Id} {镜像名称}:{标签名}

docker入门学习笔记_第5张图片
可以看到在执行完成之后,同一个镜像有了两个标签一个是latest 一个是tag

删除镜像
在删除镜像之前需要删除容器才可以删除

docker rmi ubuntu:18.04

docker入门学习笔记_第6张图片
docker入门学习笔记_第7张图片

用自己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的镜像
docker入门学习笔记_第8张图片

容器操作

启动容器
这里-it 和-itd 后者是后台运行的意思,前者输完会直接进入容器中

docker run -itd --name=ubuntu-test ubuntu /bin/bash

docker入门学习笔记_第9张图片
这里因为没有指定端口,所以后面的ports底下为空,这里可以将好几个容器的端口开放,然后对应一个内部的服务端口
docker入门学习笔记_第10张图片

启动已停止运行的容器

docker start {容器Id}

停止容器

docker stop {容器Id}

进入容器
这里有两中方式,我这里只推荐一种,下面这两条命令是一样的,不过有时上面这个命令进不去容器,就可以使用下面的命令

docker exec -it {容器Id} /bin/bash
docker exec -it {容器Id} /bin/sh

docker入门学习笔记_第11张图片
退出容器只需要输入exit,就可以了

打印容器日志
两者都可以打印日志,第二个命令执行,就会一直停留在日志打印界面,对于快速定位问题很有帮助

docker logs gitlab
docker logs gitlab -f

删除容器

docker rm -f {容器id}

docker入门学习笔记_第12张图片

将容器打成镜像

docker commit -m  "说明文字(可不写)"   -a  "作者(可不写)"   [CONTAINER ID]  [自己起的容器名]

docker入门学习笔记_第13张图片

数据卷操作(挂载)

为什么要挂载

因为容器启动后产生的数据,要是第二次再启动就会损失掉数据,为了让docker容器在运行时的数据得带持久化,就需要挂载,就是将docker容器的某一个目录和宿主机上的某一个目录映射起来,可以说就是两者有操作同一个数据,每次容器重启的时候,容器会自动将挂载目录下的数据同步到docker内部

如何挂载

最好的选择就是在容器启动的时候挂载,容器一旦跑起来后,再要去挂载会很麻烦

docker run -itd --name=[容器名] -v /root/data:/root/data [镜像名]

这里使用==-v== 关键字来指定,前面是宿主机的路径,后面是容器内部路径,我为了方便查找,两个路径写的一样,这里可以写成不一样的
docker入门学习笔记_第14张图片

另外需要注意的是,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 [email protected] 'nohup java -jar -Duser.timezone=GMT+08 /root/workspace/data/project/XXXX.jar >platform.log 2>&1 &'
ssh -p 8801 [email protected] 'tail -f ~/platform.log -n300'

你可能感兴趣的:(docker,docker,容器,运维)