Docker命令

docker相关概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker命令

1、进程相关命令

进程相关命令是用来启动或停止docker服务的

bash 复制代码
systemctl start docker    #启动docker服务
systemctl stop docker     #停止docker服务 
systemctl restart docker  #重启docker服务 
systemctl status docker   #查看docker服务状态
systemctl enable docker   #开机启动docker服务
systemctl disable docker  #关闭开机启动docker服务

2、 镜像相关命令

a、配置镜像加速器

首先登陆阿里云,点击控制台,然后再点击左边的像三字一样的图标,再点击产品与服务,在输入关键字地方搜索"镜像",会显示容器镜像服务,点击"容器镜像服务",在左侧的最下方有镜像中心(镜像加速器),点击镜像加速器,复制如下代码到linux执行即可

bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://58xnm6gw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

b、查看镜像

bash 复制代码
[root@localhost ~]#docker images    #查看本地所有的镜像    
[root@localhost ~]#docker images --q # 查看所有镜像的id

c、搜索镜像

bash 复制代码
docker search 镜像名称
[root@localhost ~]#docker search  redis  #从网络中查找redis镜像

d、拉取镜像

从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本,如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。 https://hub.docker.com/_/docker

bash 复制代码
docker pull 镜像名称:版本号
[root@localhost ~]#docker pull redis:5.0 
[root@localhost ~]#docker pull centos:7 
[root@localhost ~]#docker pull mysql:8.0.25 
[root@localhost ~]#docker pull tomcat:8
[root@localhost ~]#docker pull nginx

如果拉取镜像报超时,执行如下命令:

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

e、删除镜像

删除本地镜像

bash 复制代码
docker rmi 镜像id
docker rmi redis  #删除dokcer中下载的redis镜像

3、 容器相关命令

a、查看容器
shell 复制代码
[root@localhost ~]#docker ps       # 查看正在运行的容器
[root@localhost ~]#docker ps --a    # 查看所有容器 (包括没有运行的容器)
b、创建并启动容器
shell 复制代码
docker run -it | -id --name=容器名称 镜像名称:版本 /bin/bash
[root@localhost ~]#docker run -it --name=tomcat8080 tomcat:8 /bin/bash   #创建并自动进入容器,当输入exit 退出容器并回到宿主机
[root@localhost ~]#docker run -id --name=tomcat8080 tomcat:8				 #创建容器 但不进入容器

参数说明:

  • -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后(执行命令exit),容器自动关闭

  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

  • -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭

  • /bin/bash 这是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器就会退出。这个就表示启动容器后启动bash。默认会启动一个bash,可以忽略不写

  • -p:将linux服务器的端口与dokcer容器的端口进行映射

bash 复制代码
  docker -id  -p  linux端口:docker容器端口 --name=tomcat8080 tomcat:8
  eg:
  docker -id  -p  8080:8080 --name=tomcat8080 tomcat:8

设置容器自动启动

  • 启动时加--restart=always
bash 复制代码
  docker run -tid --name 容器名称 -p 8081:8080 --restart=always -v 你的镜像挂载名称
  
  restart参数说明:
      no             不自动重启容器. (默认value)
      on-failure     容器发生error而退出(容器退出状态不为0)重启容器
      unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器
      always         在容器已经stop掉或Docker stoped/restarted的时候才重启容器

如果项目非首次启动,则使用update更新镜像实现自动启动**

bash 复制代码
  docker update --restart=always 容器名称
c、进入容器
shell 复制代码
docker exec 参数  /bin/bash      #进入容器  注意 此处的/bin/bash不能省略
[root@localhost ~]#docker -id --name=c2 centos:7
[root@localhost ~]#docker exec -it c2 /bin/bash
[root@localhost ~]#exit         #此时容器还是在运行着的
d、启动容器相关命令
bash 复制代码
docker start  容器名    #启动容器
docker restart 容器名   #重启容器
docker stop   容器名    #停止容器
docker rm 容器名        #删除容器
docker inspect 容器名称  #查看容器名称
docker logs --tail 行数 -f  容器名   #查看某个容器日志
eg:
 docker logs --tail  300 -f tomcat  #查看某个容器末尾300行的日志内容
e、docker容器安装命令
bash 复制代码
apt-get  update # 更新apt网络组件
apt-get  -y install net-tools  # 安装net-tools组件
apt -y install vim* #安装vim编辑器
apt -y install vi* #安装vi编辑器
f、用于容器与主机之间的数据拷贝
bash 复制代码
docker cp 宿主机数据据 容器名:容器中的路径
eg:
docker cp /root/index.html tomcat:/usr/local/tomcat/webapps/hello/

将容器tomcat的/usr/local/tomcat/webapps/hello目录拷贝到主机的/root/hello目录中
docker cp  tomcat/usr/local/tomcat/webapps/hello:/root/hello/
相关推荐
大G哥2 分钟前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
醉颜凉19 分钟前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
大道归简1 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
苦逼IT运维1 小时前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
仍有未知等待探索1 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~1 小时前
Docker
docker·容器
北城青2 小时前
WebRTC Connection Negotiate解决
运维·服务器·webrtc
福大大架构师每日一题2 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes
程序那点事儿2 小时前
k8s 之动态创建pv失败(踩坑)
云原生·容器·kubernetes