Docker基本命令

  • Docker基本命令已关闭评论
  • 182 次浏览
  • A+
所属分类:linux技术
摘要

 注意:删除镜像,正在运行的镜像,无法删除 docker images 查看所有本地主机上的镜像

 

服务相关命令

 #查看docker状态
 systemctl status docker
 #启动docker
 systemctl start docker
 #重启
 systemctl restart docker
 #设置开机自启动
 systemctl enable docker

镜像相关命令

 #查看镜像  - 本地的
 docker images
 #搜索镜像 - 搜索远程的
 docker search redis
 #拉取镜像 - 从远程下载 docker pull redis:tag tag指定版本号
 docker pull redis
 #删除镜像 - 删除本地的 docker rmi ImageID ImageID指定镜像ID
 docker rmi d0f3d9fe7db7
 #删除所有镜像
 docker rmi `docker images -q`

注意:删除镜像,正在运行的镜像,无法删除

docker images 查看所有本地主机上的镜像

 [root@localhost ~]# docker images
 REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
 tomcat        8.5       1b9b129f7bca   6 hours ago   679MB
 mysql         5.6       dd3b2a5dcb48   4 months ago   303MB
 hello-world   latest   feb5d9fea6a5   7 months ago   13.3kB
 
 #解释
 REPOSITORY 镜像的仓库源
 TAG   镜像的标签
 IMAGE ID 镜像的Id
 CREATED 镜像的创建时间
 SIZE 镜像的文件大小
 
 #可选项
 -a  --all  #列出所有镜像
 -q  --quiet  #只显示镜像的ID
 

docker search搜索

 [root@localhost ~]# docker search mysql
 NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 mysql                         MySQL is a widely used, open-source relation…   12554     [OK]      
 mariadb                       MariaDB Server is a high performing open sou…   4825     [OK]    
 
 #可选项
 -- filter=STARS=3000  #搜索出来的镜像就是STARS大于3000的
 [root@localhost ~]# docker search mysql --filter=STARS=3000
 NAME     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 mysql     MySQL is a widely used, open-source relation…   12554     [OK]      
 mariadb   MariaDB Server is a high performing open sou…   4825     [OK]  

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学士

 docker pull centos
新建容器并启动
 docker run[可选参数] image
 
 #参数说明
 --name="Name" 容器的名字 tomcat01 tomcat02,用来区分容器
 -d 后台方式运行
 -it 使用交互方式运行,进入容器查看内容
 -p 指定容器的端口 -p 8080:8080
  -p ip:主机端口:容器端口
  -p 主机端口:容器端口(常用)
  -p 容器端口
  容器端口
 -p 随机指定端口
 
 
 #测试启动并进入容器
 [root@localhost ~]# docker run -it tomcat /bin/bash
 root@fb65bdba861f:/usr/local/tomcat# ls 查询容器内的tomcat
 BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
 root@fb65bdba861f:/usr/local/tomcat#
 
列出所有的运行容器
 #docker ps 命令
  #列出当前正在运行的容器
 -a  #列出当前正在运行的容器+带出历史运行过的容器
 -n #最佳创建的容器
 -q #只显示容器的编码
 [root@localhost ~]# docker ps -a
 CONTAINER ID   IMAGE         COMMAND             CREATED         STATUS                       PORTS                                       NAMES
 fb65bdba861f   tomcat        "/bin/bash"         2 minutes ago   Exited (0) 43 seconds ago                                                 zen_montalcini
 c5c85bca5639   tomcat        "catalina.sh run"   13 minutes ago   Exited (143) 12 minutes ago                                               tomcat8.5
 5616fdb3fddf   tomcat:8.5    "catalina.sh run"   3 hours ago     Exited (255) 34 minutes ago   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat
 1b800b242e98   hello-world   "/hello"
 [root@localhost ~]# docker ps
 CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES
 
退出容器
 exit  #直接容器退出+停止
 Ctrl+P+Q  #容器不停止退出
 
删除容器
 docker rm 容器id   #删除指定容器,不能删除正在运行的容器,如果要强制删除  rm -f
 docker rm -f $(docker ps -aq)  #删除所有的容器
 docker ps -a -q|xargs docker rm #删除所有的容器
停止容器的操作
 docker start 容器id  #启动容器
 docker restart 容器id  #重启容器
 docker stop 容器id #停止当前正在运行的容器
 docker kill 容器id #强制停止当前容器

常用其他命令

查看日志
 docker logs -fft --tail 10 容器  没有日志
 #自己编写一段shell脚本
 [root@kuangshen /]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1; done"
 
 # [root@kuangshen /]# docker ps
 CONTAINER ID IMAGE
 dce7b86171bf centos
 #显示日志
 -tf
 #显示日志
 --tail number#要显示日志条数
 [root@kuangshen /]# docker logs -tf --tail 10 dce7b86171bf
 
查看容器中进程信息
 #命令 docker top 容器id
 [root@localhost ~]# docker top 5ab76fc61511
 UID                 PID                 PPID               C                   STIME               TTY                 TIME               CMD
 root                8602                8582                7                   15:58               ?                   00:00:01           /usr/local/openjdk-11/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
       
查看镜像元数据
 #命令 docker inspect 容器id
 [root@localhost ~]# docker inspect 5ab76fc61511
 [
    {
         "Id": "5ab76fc615110ffb5dfe188ff9258998e8f21eb117192349c32c94050e579095",
         "Created": "2022-05-12T07:58:46.314489117Z",
         "Path": "catalina.sh",
         "Args": [
             "run"
        ],
         "State": {
             "Status": "running",
             "Running": true,
             "Paused": false,
             "Restarting": false,
             "OOMKilled": false,
             "Dead": false,
             "Pid": 8602,
             "ExitCode": 0,
             "Error": "",
             "StartedAt": "2022-05-12T07:58:46.76464332Z",
             "FinishedAt": "0001-01-01T00:00:00Z"
        },...........
 
进入当前正在运行的容器
 #我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
 
 #命令
 docker exec -it 容器id /bin/bash
 
 #测试
 [root@localhost ~]# docker exec -it 5ab76fc61511 /bin/bash
 root@5ab76fc61511:/usr/local/tomcat# ls
 BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
 root@5ab76fc61511:/usr/local/tomcat# ps -if
 error: unsupported SysV option
 
 Usage:
  ps [options]
 
  Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
  for additional help text.
 
 For more details see ps(1).
 
 #方式二
 docker attach 容器id
 #测试
 [root@localhost ~]# docker attach 5ab76fc61511
 正在执行当前代码。。。。
 
 #docker exec   #进入容器后开启一个新的终端 可以在里面操作(常用)
 #docker attach #进入容器正在执行的终端,不会启动新的进程
 

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

 #进入容器内部
 [root@localhost ~]# docker exec -it 35a549f10a4b /bin/bash
 root@35a549f10a4b:/usr/local/tomcat# ls
 BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
 root@35a549f10a4b:/usr/local/tomcat# cd /home
 root@35a549f10a4b:/home# ls
 #新建一个antler.java文件
 root@35a549f10a4b:/home# touch antler.java
 root@35a549f10a4b:/home# ls
 antler.java
 #退出
 root@35a549f10a4b:/home# exit
 exit
 [root@localhost ~]# docker ps
 CONTAINER ID   IMAGE       COMMAND             CREATED             STATUS             PORTS                                       NAMES
 35a549f10a4b   tomcat:8.5   "catalina.sh run"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat
 #命令
 docker cp 容器id:/文件绝对路径 要赋值的位置
 #将容器内文件拷贝到主机
 [root@localhost ~]# docker cp 35a549f10a4b:/home/antler.java /home
 [root@localhost ~]# ls /home
 antler.java damo java mysql tomcat xiaodengfeng