Docker

简介

  • Docker
  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
  • 网络模式 和 端口映射

学习

使用|命令

在这里插入图片描述
以镜像为核心,将镜像加载到容器运行
各种获取镜像的方式<–>镜像<–>容器

系统命令

systemctl status docker  # 查看docker状态
systemctl start docker   # 开启docker
ststemctl stop docker    # 关闭docker
systemctl restart docker # 重启docker

vim /etc/docker/daemon.json          # 修改文件
{
	"resistry-mirrors":["<镜像网址>"] 
}# 比如 https://cdoid6va.mirror.aliyuncs.com
systemctl daemon-reload docker        # 重新载入daemon-reload文件
#最后需要重新启动

Docker命令

  • 命令使用方式:在bash中使用

帮助命令

//查看帮助
docker --help          # 查看帮助命令
docker <命令> --help   # 查看该命令的帮助
docker --version       # 查看简易版本星系
docker version         # 查看版本信息
docker info            # 查看系统信息

镜像命令

<镜像><镜像名[:<tag>]><镜像ID>

#查看所有镜像
docker images 
  -a, --all             # 列出所有镜像
  -q, --quiet           # 只显示镜像id
docker search <镜像名>[:<版本号version>] //在远程镜像站查看指定的镜像,可以到Docker Hub上搜索,有更详细信息
  --filter , -f		Filter output based on conditions provided
  --format		Pretty-print search using a Go template
  --limit	25	Max number of search results
  --no-trunc
  # --filter=STARS=3000  #搜索出来的镜像就是STARS大于3000的
docker pull <镜像名>[:<TAG latest|5.7>] //从镜像站拉取镜像
docker pull <地址>

# 删除指定的镜像
docker rmi <镜像D> 
  -f # 强制删除
docker rmi <镜像> <镜像> # 删除多个镜像
docker rmi $(docker images -a) # 删除所有镜像

# 将容器生成镜像
docker commit <容器名> <目的镜像名>[:<tag>]
  -a="<作者名>" # 作者
  -m="<注释>"
# 镜像打包、发送、接收
docker save -o <打包目的目录> <镜像名> //压缩
scp <文件路径> <目的路径 可能包含IP地址> //发送
docker load -i <路径> //载入镜像

//容器打包
docker export -o <文件路径> <容器名>
docker import <文件路径> <容器名[:<版本>]>

# 再贴一个标签
docker tag <源镜像> <目的镜像名[:<tag>]>

# 远程登录仓库
docker login
  -u <用户名>
docker logout


容器命令

常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

<image>      :<镜像>
<container>  :<容器名>
<containerID>:<容器ID>

#将镜像加载到容器
dockr run <image> <command进入容器后执行的命令:/bin/bash>
  --name=<唯一的容器名>
  -it # -t:分配终端;-i:交互式容器
  -d # 后台运行容器
  -v <宿主机目录>:<容器内目录>] # 目录 挂载|映射
  -p <宿主机端口>:<容器端口>]   # 端口映射
     <ip>:<宿主机端口>:<容器端口>
     <容器端口>
  -P  # 随机指定端口(大写P)
  --rm #用完就删除
  -e <key>=<value># 环境配置
  --net <network>
  
# 进入容器
docker exec <container> <command进入容器后执行的命令:/bin/bash>
  -it
  -d
# 进入正在运行的命令行
docker attach <容器> 

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

# 查看容器
docker ps # 查看 正在 运行的容器
	-a # 查看 正在+历史 运行的容器
	-l # 查看 最近 运行的容器
	-q # 只显示容器的编号
	# 有时-aq
#启动容器
docker start <容器> 
#重启容器
docker restart <容器>
#停止当前正在运行的容器
docker stop <容器>
#强制停止当前容器
docker kill <容器>
# 查看容器的进程信息
docekr top <容器>
#查看容器的详细信息,-f==--format
docker inspect <容器>
  -f='{{<.属性1.子属性1>}}'
#删除容器
docker rm <容器> 
  -f # 强制删除
docker rm <容器> <容器> # 删除多个容器名
docker rm $(docker ps -aq) # (查询出来的)删除所有容器,$( ) 可以用 ` ` 替换

Dockerfile

构建步骤:

1、 编写一个dockerfile文件

2、 docker build 构建称为一个镜像

3、 docker run运行镜像

4、 docker push发布镜像(DockerHub 、阿里云仓库)

FROM			# 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的,姓名+邮箱
RUN				# 镜像构建的时候需要运行的命令
ADD				# 步骤:tomcat镜像,这个tomcat压缩包! 添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE          # 暴露端口配置,跟 -p 是一个道理
CMD				# 指定这个容器启动时要执行的命令,只有最后一个命令会生效,可悲替代
ENTRYPOINT		# 指定这个容器启动的时候要执行的命令,可以追加命令
ONBUILD			# 当构建一个被继承DockerFile 这个时候就会运行ONBUILD的指令。触发指令
COPY			# 类似ADD,将我们文件拷贝到镜像中
ENV				# 构建的时候设置环境变量,跟 -e 是一个意思

# CMD 和 ENTRYPOINT 的区别说明:(后面也会介绍)
# 若CMD 和 ENTRYPOINT 后跟的都是 ls -a 这个命令,当docker run 一个容器时,添加了 -l 选项,则CMD里的ls -a 命令就会被替换成-l;而ENTRYPOINT中的 ls -a会追加-l变成 ls -a -l  
docker build .
  -f <Dockerfile文件> #默认为当前文件下的Dockerfile
  -t <镜像>

网络

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

docker network ls

docker network connect mynet tomcat01

docker network disconnect mynet tomcat01

docker network inspect <network>

docker inspect <network|容器名>

其他

# 查看日志
docker logs 
  -f     #跟踪日志输出
  -t     #带时间戳
  --tail # 要显示的条数


  
docker cp <源文件路径> <目的文件夹路径> //复制文件,宿主机根目录:/root;容器目录:<容器>:/root



所有命令(docker --help)

[root@localhost ~]# docker --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides
                           DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default
                           "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Build with BuildKit (Docker Inc., v0.5.1-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc.)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

安装

步骤(安装指导-简化版/2021.5.2)

#1.卸载历史版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

#2.查询历史版本
yum list docker-ce --showduplicates | sort -r //查看历史版本

#正式开始安装

#3.需要的安装包
yum install -y yum-utils 
#4.设置镜像的仓库
yum-config-manager \
   --add-repo \
   https://download.docker.com/linux/centos/docker-ce.repo
   #http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #国外地址(上面的)比较慢,阿里云镜像(z这个)比较快
#更新索引
yum makecache fast 

//yum-config-manager --enable docker-ce-nightly
//yum-config-manager --enable docker-ce-test
//yum-config-manager --disable docker-ce-nightly

#5.安装docker docker-ce 社区版 而ee是企业版
yum install docker-ce docker-ce-cli containerd.io //安装相关的内容,一直yes
#下历史版本,用下面这个
yum install docker-ce[-<VERSION_STRING>] docker-ce-cli[-<VERSION_STRING>] containerd.io //安装相关的内容,一直yes

#5.启动docker
systemctl start docker
#6.使用docker version 查看是否安装成功
docker version

阿里云镜像加速

阿里云文档

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ffcoitbk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

可能出现的错误及处理

  1. 权限不足;需要管理员权限;切换到root|在每条指令前+’sudo ‘
  2. 报错:Failed to start docker.service: Unit not found;安装失败;重装,最后一条命令一直yes
  3. 新建centos7的虚拟机安装docker后无法启动,报错:Failed to start docker.service: Unit not found
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值