Docker基础命令

Docker 镜像命令

查看镜像

docker images #显示镜像
-a #显示所有
-q #只显示ID

搜索命令

docker search [镜像名] #搜索该镜像
#可选项,通过stars过滤
--filter=stars=XXX  #搜索出的镜像stars大于XXX

下载镜像

docker pull [镜像名] #不加tag,默认下载最新版
docker pull mysql:5.7 #下载5.7版本的mysql镜像

删除镜像

docker rmi  #删除镜像
-f #全部山粗
docker rmi -f [id] #通过id来删除镜像
docker rmi -f $(docker images -aq) #删除所有镜像

Docker容器命令

新建容器并启动

docker run [可选参数] [镜像名]
#参数说明
--name="Name" 指定容器名,用来区分容器
-d 后台启动容器
-it 使用交互方式,进入容器访问查看内容
-p  指定容器的端口
	-p 8080:8080 主机端口:容器端口 常用
-P  大写P,随机指定端口

列出所有运行的容器

docker ps #列出正在运行的容器
#可选参数化
-a 列出当前在运行的容器并带出历史运行的容器
-n=[X] 列出最近创建的容器,x为个数,从上到下为新到旧
-q  只显示容器的编号

退出容器

容器内
exit # 直接停止容器并退出
Ctrl + P + Q #不停止容器退出

删除容器

docker rm [容器id] #删除容器
-f #全部删除
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -aq | xargs docker rm #删除所有容器

启动停止容器

docker start [容器id]
docker restart [容器id]
docker stop [容器id]
docker kill [容器id]

其他常用命令

后台启动容器

docker run -d [imagesName] #后台启动镜像
#坑:dockers后台启动该容器,必须有前台进程,docker发现没有前台进程会自动停止该容器
##对外服务应用则不会,centos这类会发现此问题

查看日志

docker logs -tf --tail [显示日志的条数] [容器id]
--tial string形式输出日志

查看容器内进程信息

docker top [容器id]

查看容器详细信息

docker inspect [容器id]
###查看详细信息后可以得知docker ps显示的容器id为全id的前几位缩写

进入容器

#方法一
docker exec -it [容器id] #进入容器后打开一个新的终端
#方法二
docker attach [容器id]   #进入正在执行的容器,不会打开新的终端
##该方法只能进入当前正在运行的容器

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

docker cp [容器id]:[/路径/文件] [主机路径] #一般不会用命令从主机拷贝到容器,通常使用挂载
##停止运行的容器也可以拷贝,因为容器还在,数据就会还在

##拷贝是个手动的过程,未来可以使用-v技术来实现自动同步[数据卷技术]
##联通主机和容器目录 容器/home 主机/home 文件同步

小结

心得:基本命令学完了,感觉还是容易会忘,还是经常得敲。docker命令跟linux命令几乎一模一样,学了docker命令后顺便把linux基本命令复习了一遍,大学毕业之后不常用几乎也快忘完了,这次学习还是收获颇丰。本次学习的命令都是最常用最基础的命令,之后还有更深层次的等待着学习。

镜像部分

可视化

  • portainer(首先学习使用)
  • Rancher(CI/CD再学习)

什么是portainer #docker图形化界面工具

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

本机访问localhost:8088进入可视化管理界面

ps:一般很少会用,测试体验一下就行

Commit

docker commit  #提交容器成为一个新的副本

#类似git命令
docker commit -m="文本描述" -a="作者" 容器id 镜像名:[TAG(版本)]

实战测试

#启动tomcat镜像生成容器,映射主机端口为8080

#复制webapps.dist目录下文件至webapps中,使其能够访问默认页面

#执行 PS C:\Windows\system32> docker commit -m="add webapps app" -a="AsSu" 62cf1257e0b3 tomcat:1.0.1  

#docker images查看生成的镜像

#通过commit把操作/配置好的容器,生成一个新的镜像,之后就使用这个新的镜像

=======================================================================================

进阶

容器数据卷

什么是数据卷

数据保存在容器中,是不科学的,因为一旦删除容器,携带的数据随着一起被删除

所以我们必须要将数据持久化

容器之间可以有一个数据共享的技术,容器中产生的数据,同步保存在本地中

数据卷技术,将容器内的目录,挂载到Linux/本地上 ##容器之间也是可以相互共享的

使用数据卷

PS C:\> docker run -it -v /d/linux/test:/test --name="centos" centos:7 /bin/bash  
#-v /d/linux/test:/test  将centos根目录下的test文件夹同步到windows的d盘中的linux/test文件夹中

##踩的坑##
因为学习的教程使用的是linux系统,所以在windows下操作的时候没有指定d盘,所以前几次尝试都失败了

对dockerfile的初步印象

dockerfile就是用来构建镜像的脚本文件

#创建一个dockerfile文件
#文件中的脚本内容
From centos

VOLUME ["volume01","volume02"]

cmd echo "------end------"

cmd /bin/bash

dockerfile今后会使用十分之多,因为我们通常要自己构造镜像

如果构造镜像时没有挂载卷,要使用-v手动进行挂载

数据卷容器

--volume-from
#通过此命令实现荣期间的数据共享

结论:

容器之间可以用此方法进行配置信息的同步(集群配置同步)

数据卷容器的生命周期一直到没有容器使用为止

DockerFile

构建镜像的脚本文件

构建步骤

  • 编写一个dockerfile文件
  • docker build 构建成为镜像
  • docker run 运行该镜像
  • docker push 发布镜像(dockerhub,aliyun)分为私有跟共有

DockerFile的指令

FROM		# 基础镜像
MAINTAINER	# 姓名+邮箱  作者信息
RUN			# 构建镜像时要运行的命令
ADD			# 添加内容
WORKDIR		# 镜像的工作目录
VOLUME		# 挂载的目录
EXPOSE		# 暴露端口
CMD			# 指定这个容器启动时要运行的命令,只有最后一个会生效,且可以他被替代
ENTRYPOINT	# 指定这个容器启动时要运行的命令,可以追加命令
ENV			# 构建时配置的环境变量

实战测试

创建一个自己配置的centos

#1 编写dockerfile
PS C:\dockerfiles> cat .\mydockerfile
FROM centos

MAINTAINER asuu<transparent@163.com>

ENV MYPATH /user/local

WORKDIR $ENV

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

#2 通过这个dockerfile构建镜像
docker build
Successfully built e6fafecd79f6
Successfully tagged asuu-centos:latest #执行结果

#3 docker run运行该镜像
docker history 容器id #查看该容器的构建过程

发布镜像

dockerhub

#1 登录dockerhub账号
docker login
Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username
  docker login -u [account]
  PASSWORD:
  
#登录成功
PS C:\Users\AsUu> docker login -u transparentz
Password:
Login Succeeded
PS C:\Users\AsUu>

学习自Bilibili BV1og4y1q7M4 ,Up遇见狂神说

posted @ 2020-09-08 19:29  树樁  阅读(135)  评论(0)    收藏  举报