Docker教程

文章介绍了Docker与传统虚拟机的不同,强调Docker的轻量级特性。内容包括Docker的基本组成如镜像和容器,以及Docker的常用命令,如镜像管理、容器操作和数据卷的使用。此外,还详细讲解了如何通过Dockerfile创建自定义镜像和数据卷容器的概念。
摘要由CSDN通过智能技术生成

1. Docker 和虚拟机技术的不同:

  • 传统虚拟机:虚拟出一条硬件,运行一个完成的操作系统,然后在这个系统上安装和运行软件.
  • 容器内的应用直接应用在宿主机的内容,容器是没有自己的内核的,也没有虚拟机的硬件,容器间是相互隔离的,每个容器内都有一个属于自己的文件系统.
  • 容器打包镜像,发布测试,一件运行,更便捷的升级和扩缩容.

2. Docker 的基本组成

  1. 镜像(image): docker镜像就好比一个模版,可以通过这个模版来创建容器服务(最终服务运行或者项目运行就是在容器中的)
  2. 容器(container): docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.
  3. 仓库(repository): 存放镜像的地方

3. 基本命令

docker version   # 显示docker版本信息
docker info      # 显示docker系统信息
docker 命令 --help  

3.1 镜像基本命令

docker images  # 镜像的仓库源 | 镜像标签| 镜像ID| 镜像创建时间| 镜像大小
docker images  -aq  # 显示所有的镜像id
docker search mysql  # 从dockerhub中搜索相应的镜像
docker pull  mysql # 下载镜像

docker rmi -f imageID #删除某一个容器
docker rmi -f $(docker images -aq) # 删除全部的容器

3.2 容器命令

说明: 我们有了镜像才可以创建容器,例如:

新建容器并启动

# 下载centos镜像
docker pull centos
docker run [可选参数] image

参数说明
--name =" Name" 容器名字,用于区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-P 指定容器端口-p 8080:8080
-p 随机指定端口

docker run -it centos  /bin/bash    # 启动并进入容器
exit  # 容器停止并退回主机
ctrl+P+Q # 容器不停止退回

启动和停止容器操作:

docker start  容器id     # 启动容器
docker  restart 容器id   # 重启容器
docker stop 容器id       # 停止当前正在运行的容器
docker kill 容器id       # 强制停止当前运行的容器

删除容器

docker rm 容器id # 删除指定容器
docker  rm -f -$(docker ps -aq) # 删除所有的容器
docker ps -a -q|xargs docker rm # 管道式,删除所有的容器 

查看正在运行的容器

docker ps  # 查看所有正在运行的容器
docker ps -a # 列出当前正在运行的容器+历史运行过的容器

3.3 常用的其他命令

查看日志

docker logs  -tf --tail 10 容器id 

查看容器中的进程信息

docker top 容器id 

查看镜像的元数据

docker inspect 容器id

进入当前正在运行的容器

# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
docker exec -it 容器id  /bin/bash    # 进行容器后开启一个新的终端(常用)
docker attach 容器id              # 进入正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id: 容器内路径 主机路径

3.4 命令小结

命令功能中文解释
attachattach to a running container当前shell下attach连接指定运行的镜像
buildbuild an image from a Dockerfile通过Dockerfile定制镜像
commitcreate a new image from a container changes提交当前容器为新的镜像
cpcopy files/folders from the containers filesysytem to the host path从容器中拷贝指定文件或目录到宿主机中
createcreate a new container创建一个新的容器,同run,但不启动容器
diffinspect changes on a container’s filesystem查看docker容器变化
eventsget real time events from the server从docker服务获取容器实时事件
execrun a command in an existing container在已存在的容器上运行命令
exportstream the contents of a container as a tar archive导出容器的内容流作为一个tar归档文件[对应import]
historyshow the history of an image展示一个镜像形成的历史
imageslist images列出系用当前镜像
importcreate a new filesystem image from the contents of a tarball从tar包中的内容创建一个新的文件系统映像[对应export]
infodisplay system-wide information显示系统相关信息
inspectreturn low-level information on a container显示容器详细信息
killkill a running containerkill指定的docker容器
loadload an image from a tar archive从一个tar包中加载一个镜像[对应save]
loginregister or login to the docker registry server注册或者登录一个docker源服务器
logoutlog out from a docker registry server从当前docker registry退出
logsfetch the logs of a container输出当前容器日志信息
portlookup the public-facing port which is NAT-ed to PRIVATE_POTRT查看映射端口对应的容器内部源端口
pausepause all processes within a container暂停容器
pslist container列出容器列表
pullpull an image or a repositry from the docker registry server从docker镜像源服务器拉取指定镜像或者库镜像
pushpush an image or a repository to the docker registry server推送指定镜像或者库镜像至docker源服务器
restartrestart a running container重启运行的容器
rmremove one or more containers移除一个或者多个镜像
rmiremove one or more images移除一个或多个镜像[无容器使用才可以删除,否则需要删除相关的容器才可或者 -f 强制删除]
runrun a command in a new container.创建一个新的容器并运行一个命令
savesave an iamge to a tar archive创建一个镜像为一个tar包
searchsearch for an image on the docker hub在docker hub中搜索镜像
startstart a stopped containers启动容器
stopstop a running containers停止容器
tagtag an image into a repositry给源中国镜像打标签
toplookup the running processes of a container查看容器中运行的进程信息
unpauseunpause a paussed container取消暂停容器
versionshow the docker version information查看docker 版本号
waitblock until a container stops,then print its exit code截取容器停止时的退出状态值

4. Commit 镜像

docker commit 提交容器成为一个新的副本
# 命令和git原理类似
docker commit -m ="提交描述信息" -a ='作者' 容器id 目标镜像名

实例:

  • 启动一个默认的tomcat
  • 发现这个默认的tomat是没有webapps应用
  • 自己拷贝了基本的文件
  • 将我们操作过的容器通过commit提交一个镜像,以后就可以使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像.

5. 容器数据卷

如果数据都在容器中,那么我们删除容器,数据就会丢失.数据需要持久化,并且容器之间可以共享数据.数据卷可以满足:容器的持久化和同步操作,容器间也是可以数据共享的.

使用数据卷(volume)

docker  run -it -v 主机目录 容器目录   centor  /bin/bash

好处: 我们以后修改只需要在本地修改即可,容器内会自动同步!

5.1 Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件 ===> 命令脚本(通过这个脚本可以生成镜像)

构建步骤:

  1. 编写一个dockerfile 文件
  2. docker build 构建成为一个镜像
  3. docker run 运行镜像
  4. docker push 发布镜像 (DockerHub、阿里云镜像仓库)

DockerFile的指令

FROM             #基础镜像,一切从这里开始构建
MAINTAINER        #镜像是谁写的.姓名+邮箱
RUN              # 镜像构建的时候需要运行的命令
ADD              # 例如tomcat镜像,这个tomcat压缩包就是需要添加的内容
WORKDIR          # 镜像的工作目录
VOLUME           # 挂载的目录
EXPOSE           # 保留端口配置
CMD              # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPORT         #指定这个容器启动的时候需要运行的命令
ONBUILD。         # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令.
COPY              # 将我们的文件拷贝到镜像中
ENV               # 构建的时候设置环境变量

创建一个自己的centos镜像

  • 构建Dockerfile文件
# 创建一个dockerfile文件,名字可以随机,建议dockerfile
FROM centos
MAINTAINER  zhuht<2259455033@qq.com>
ENV MYPATH /user/local   # 定义环境变量     
WORKDIR $MYPATH       # 进来是的工作目录
RUN yum -y install vim      # 安装vim工程
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "------end-------"
CMD /bin/bash
  • 构建镜像
docker build -f dockerfile -t mycentos:0.1 .

创建Tomcat镜像

  1. 准备镜像文件tomcat压缩包,jdk的压缩包
  2. 编写Dockerfile文件
FROM centor
MAINTAINER  zhuht<2259455033@qq.com>
COPY readme.txt /user/local/readme.txt
ADD  jdk.tar /user/local/   # jdk的压缩包
ADD tomcat.tar /user/local/
RUN yum -y install vim      # 安装vim工程
RUN yum -y install net-tools
ENV MYPATH /user/local   # 定义环境变量     
WORKDIR $MYPATH       # 进来是的工作目录
ENV JAVA_HOME /user/local/jdk.1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EXPOSE 80
CMD echo $MYPATH
CMD echo "------end-------"
CMD /bin/bash

5.2 数据卷容器

docker run -it --name docker02 --volumes-from docker01 lainxi/censtor:1.0
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值