docker 学习
教程参考B站狂神视频:
环境
linux CentOs7 系统内核3.0以上
安装
参照官方文档
[Fedora] (https://docs.docker.com/engine/install/fedora/)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| # $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # sudo yum install -y yum-utils # sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/fedora/docker-ce.repo
# sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/fedora/docker-ce.repo
# yum makecache fast
# sudo yum install docker-ce docker-ce-cli containerd.io
# sudo systemctl start docker # docker version # systemctl start docker.service systemctl enable docker.service
# sudo docker run hello-world # docker images
# sudo yum remove docker-ce docker-ce-cli containerd.io # sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
#
|
镜像基本命令
1 2 3 4
| docker version docker info docker --help
|
docker帮助文档官网
镜像命令
docker images:查看当前所有的镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
1 2 3 4
| # docker images -a # docker images -q
|

docker search – 搜索镜像
1 2 3 4
| # docker search mysql
#
|
docker pull 下载镜像
1 2 3 4 5
| docker pull mysql ## 下载mysql镜像
docker pull mysql:5.0 ## 指定版本下载mysql
#
|
docker rmi: 删除镜像
1 2 3 4 5 6
| docker rmi imageId|imageName 根据镜像id或者名称删除镜像
docker rmi -f ${docker images -aq} ## 批量删除。${} 是先查询出来,然后删除所查询的镜像
docker rmi -f name1 name2 name3 ## 删除多个镜像
|
容器命令
有了镜像才可以创建容器,这里下载centos容器并启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # docker pull centos
# docker run [可选参数] image
# --name 名称 -d 以后台方式运行 -i 使用交互方式运行,进入容器查看内容 -t -p 指定容器的端口 -p 8080:8080 主机端口:容器端口 容器端口 -P(大写) 随机指定端口 --rm 运行完退出后会删除容器
docker run -it centos /bin/bash ## 启动并进入容器
exist ## 在容器中使用可以退出当前容器
# docker ps docker ps -a ## 包含所有当前运行以及曾经运行过得容器 docker ps -n=7 ## 显示最近创建的容器列表 docker ps -q ## 只显示容器编号
# exist ## 退出并停止 ctrl + P + Q ## 容器不停止,但是退出
# docker rm 容器id ## 根据id删除容器 加-f强制删除
docker rm -f [参数] ## 类似于镜像删除 # 启动 停止 容器 docker start 容器id ## 通过容器id启动容器 docker restart ## 重启容器 docker stop ## 容器停止 docker kill ## 强制容器停止
|
其他常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker run -d centos ## 后台启动centos ,但是会自动停止。因为centos需要作为前台。像tomcat这种就不需要,直接后台就可以
# docker logs [OPTIONS] CONTAINER -t ## 显示时间戳 -f ## 跟随输出显示 --details ## 指定显示行数 后面需要跟数字
# docker top CONTAINER [ps OPTIONS]
# docker inspect
# docker exec -it 容器id # 进入容器后开启一个新的终端
docker attach 容器id ## 进入容器正在执行的终端
# docker cp 容器id:/home/text.java /home #
|
commit镜像
1 2 3 4
| # docker commit -a "作者" -m "嗯update" 容器id 镜像名称:版本号 #
|
容器数据卷
将容器内部的文件与当前系统中的文件绑定共享
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| # docker run -it -v 主机目录文件:容器内部文件 mysql /bin/bash
# docker inspect 容器id
#
# docker volume --help
# docker volume ls
# docker volume inspect 挂载名
# #
# # docker run -it -v 主机目录文件:容器内部文件:ro|rw # ro: 只读 # rw: 可写
# docker run -it -name test --volumes-from 另一个容器名称 要启动的容器名称:版本号
|
具名挂载
1 2
| # docker run -it -v 主机目录文件:容器内部文件 mysql /bin/bash
|
匿名挂载
1 2
| # docker run -it -v 主机目录文件:容器内部文件 mysql /bin/bash
|
Dockerfile
用来构建docker镜像的构建文件.

需要知道,dockerfile中,#开头的语句默认为注释,不会被编译执行
文件字段:
1 2 3 4 5 6 7 8 9 10
| FROM #基础镜像 MAINTAINER #维护者(邮箱) RUN # 需要执行什么东西 ADD # 需要添加什么文件,如果是tar.gz会自动解压 WORKDIR # 工作目录 VOLUME # 挂载的目录,默认匿名挂载 EXPOSE # 暴露的端口 CMD # 指定容器启动时执行的命令,会跟在ENTRYPOINT 后面当做其参数 ENTRYPOINT # 启动时执行的命令 ENV # 设置当前镜像内的环境变量
|
构建自己的镜像
- 编写Dockerfile文件
1 2 3 4 5 6
| FROM JAVA:8 MAINTAINER VOIVVVV(voidvvv@git.com) WORKDIR /usr/local ADD springboot_image_demo.jar /app.jar CMD ["--server.port=8080"] ENTRYPOINT ["java","-jar","app.jar"]
|
springboot项目从github源码直接打包构建镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| FROM maven:3.3-jdk-8
VOLUME /tmp
WORKDIR /code
# Prepare by downloading dependencies ADD pom.xml /code/pom.xml #RUN ["mvn", "dependency:resolve"] #RUN ["mvn", "verify"]
# Adding source, compile and package into a fat jar ADD src /code/src RUN ["mvn", "clean", "install"]
RUN ["ls", "/code/target"] RUN ["pwd"] RUN ["ls", "-ltrh", "/code/target/myspringboot.jar"]
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/code/target/myspringboot.jar" ]
|
- build 镜像
1 2 3 4 5 6 7 8 9 10
| docker build -f Dockerfile文件名 -t 镜像名称:版本号 .(这个点代表构建所需的环境)
docker build -f Dockerfile文件名 -t 镜像名称:版本号 .
# # . 当前文件夹下 tar.gz 压缩包内的所有文件 git仓库 指定某个仓库,还可以指定分支,文件夹,就以该仓库指定分支指定文件夹下的内容为环境构建镜像
|