Docker基本命令
服务相关命令
#查看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`
注意:删除镜像,正在运行的镜像,无法删除
[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