Docker常见命令
Docker基础命令图
Docker常用命令
帮助命令
docker version # 查看docker版本
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
镜像命令
docker images---查看所有本地镜像
(base) gongz@zhiweideMacBook-Pro ~ % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
secfa/docker-awvs latest b94c1855ce6f 6 weeks ago 1.14GB
tomsik68/xampp latest 2d7ddabdb0d2 4 months ago 1.37GB
# 可选项
-a, --all # 列出所有镜像
-q, --quiet # 只显示镜像id
docker search---搜索镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12576 [OK]
mariadb MariaDB Server is a high performing open sou… 4834 [OK]
percona Percona Server is a fork of the MySQL relati… 576 [OK]
# 可选项,通过搜索来过滤
--filter=stars=3000 # 搜索结果stars大于3000
docker pull---下载镜像
[root@certain-fiber-1 ~]# docker pull mysql
Using default tag: latest # 不写tag默认为latest
latest: Pulling from library/mysql
c32ce6654453: Pull complete # 分层下载,docker image的核心
415d08ee031a: Pull complete
7a38fec2542f: Pull complete
352881ee8fe9: Pull complete
b8e20da291b6: Pull complete
66c2a8cc1999: Pull complete
d3a3a8e49878: Pull complete
e33a48832bec: Pull complete
410b942b8b28: Pull complete
d5323c9dd265: Pull complete
3212737f31c0: Pull complete
d0032d4b0dc5: Pull complete
Digest: sha256:a0805d37d4d298bd61e0dfa61f0ddf6f4680b453fa25d7aad420485a62417eab #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址
# 等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest
# 指定版本
[root@certain-fiber-1 ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
c32ce6654453: Already exists
415d08ee031a: Already exists
7a38fec2542f: Already exists
352881ee8fe9: Already exists
b8e20da291b6: Already exists
66c2a8cc1999: Already exists
d3a3a8e49878: Already exists
172aabfba65c: Pull complete
fea17d0b1d1e: Pull complete
fff7f5411ca9: Pull complete
c33d43428e07: Pull complete
Digest: sha256:16e159331007eccc069822f7b731272043ed572a79a196a05ffa2ea127caaf67
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
docker rmi---删除镜像
[root@certain-fiber-1 ~]# docker rmi -f 容器id # 删除指定镜像
[root@certain-fiber-1 ~]# docker rmi -f 容器id 容器id 容器id # 删除多个镜像
[root@certain-fiber-1 ~]# docker rmi -f `docker images -aq` # 删除全部镜像
[root@certain-fiber-1 ~]# docker rmi -f $(docker images -aq)
# `命令`或$(命令)的结果会作为参数
容器命令
通过镜像创建容器,下载centos镜像,用作练习
[root@certain-fiber-1 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
新建容器并启动
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 参数说明
--name="Name" 容器名称,用于区分
-d 后台运行
-it 使用交互方式运行,进入容器命令行
-p 指定容器端口映射 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P(大写) 随机指定容器内的端口映射
# 测试
[root@certain-fiber-1 ~]# docker run -it centos /bin/bash
[root@a929fe9dac59 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@a929fe9dac59 /]# exit
exit
[root@certain-fiber-1 ~]# ls
downloads trojan-go
id_rsa.pub trojan-go-access.log
查看容器
# docker ps
无参 # 列出当前正在运行的容器
-a # 列出所有的容器
-n=? # 显示最近创建的容器
-q # 只显示容器编号
[root@certain-fiber-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@certain-fiber-1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a929fe9dac59 centos "/bin/bash" 58 seconds ago Exited (0) 50 seconds ago lucid_montalcini
88c19d2bb06f 5ca608c9a84f "/bin/sh -c 'echo 12…" 4 months ago Exited (143) 2 months ago great_taussig
4eb56f5ec122 87a94228f133 "/docker-entrypoint.…" 6 months ago Exited (0) 4 months ago nginx_test
02016aea5ac2 d9c7999da701 "/run.sh" 7 months ago Exited (137) 6 months ago strange_lovelace
退出容器
exit # 直接容器停止并推出(没有-d时)
Ctrl+P再CTRL+Q # 容器不停止退出
[root@certain-fiber-1 ~]# docker run -it centos /bin/bash
Ctrl+P再CTRL+Q
[root@certain-fiber-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be609317788e centos "/bin/bash" 37 seconds ago Up 36 seconds condescending_kepler
删除容器
docker rm 容器id # 删除指定,不能删除运行态,加-f则强制删除
docker rm -f `docker ps -aq` # 删除所有
docker ps -a -q | xargs docker rm # 用|和xargs删除所有
启动和停止容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
常用其他命令
后台启动容器
# docker run -d 容器名称
[root@certain-fiber-1 ~]# docker run -d centos
bf0992f1a2a7223c573f21854038c86ce06adb02defdf1ba5587a5ab381e3b7d
[root@certain-fiber-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 问题:ps发现没有容器运行
# 常见的问题:docker容器后台运行时,必须要有前台进程,docker发现没有就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止容器
查看日志
# docker logs -t -f --tail 数字 容器id
-tf # 显示日志,t是加上时间戳,f是显示输出的日志
--tail 数字 # 显示指定行数的日志
查看容器中的进程信息
# docker top 容器id
查看镜像或容器底层数据(重要)
docker inspect 容器id|镜像id
进入正在运行的命令
# 通常以后台运行容器,修改配置时,就要进入容器
# 命令
# docker exec -it 容器id /bin/bash
# 进入容器,开启一个新的终端
# 方式二
# docker attach 容器id
# 进入容器正在执行的终端,不会启动新进程
从容器内拷贝文件
docker cp 容器id:容器内路径 目的主机路径
# 这段命令是在外界运行的,用于将容器内文件拿出,容器运行状态无所谓
挂载本机目录至容器
# docker容器启动时,若要挂载主机一个目录,使用-v参数。
docker run -it -v /test:/soft centos /bin/bash
# 把宿主机/test目录挂载到容器的/soft目录。