专业编程基础技术教程

网站首页 > 基础教程 正文

Docker的常用命令 docker常用命令大全简书

ccvgpt 2024-10-12 14:13:02 基础教程 9 ℃

1.帮助命令

官方帮助文档

Docker的常用命令 docker常用命令大全简书

https://docs.docker.com/engine/reference/commandline/docker/

dcoker version # 显示docker的版本信息

docker info # 显示docker的系统信息,包括镜像和容器的数量

docker 命令 --help # 帮助命令

+:mmyouni666

2.镜像命令

dcoker images # 查看本地主机上的镜像 (docker image ls)

docker search # 搜索镜像

docker pull # 下载镜像 (docker image pull)

docker rmi # 删除镜像 (docker image rm)

查看本地的所有镜像

docker images

[root@fedora ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

tomcat 8 2d2bccf89f53 6 months ago 678MB

alpine latest c059bfaa849c 6 months ago 5.58MB

hello-world latest feb5d9fea6a5 9 months ago 13.3kB


# REPOSITORY # 镜像的仓库源

# TAG # 镜像的标签

# IMAGE ID # 镜像的id

# CREATED # 镜像的创建时间

# SIZE # 镜像的大小

# 可选项

Options:

-a, --all Show all images (default hides intermediate images) #列出所有镜像

-q, --quiet Only show numeric IDs # 只显示镜像的id


[root@fedora ~]# docker images -aq #显示所有镜像的ID


搜索镜像

docker search

[root@fedora ~]# docker search mysql

NAME DESCRIPTION STARS



下载镜像

# docker pull 镜像名[:tag]



删除镜像

docker rmi

docker rmi -f 镜像ID # 删除指定的镜像

docker rmi -f 镜像ID 镜像ID 镜像ID # 删除多个镜像

docker rmi -f $(docker images -aq) # 删除所有镜像


3.容器命令

有了镜像才可以创建容器,下载一个centos测试学习

[root@fedora ~]# docker pull centos


新建容器并启动

docker run [可选参数] image


# 参数说明

--name="NAME" # 对容器命名,便于区分容器

-d # 以后台方式运行

-it # 使用交互方式运行,进入容器查看内容

-p # 指定容器的端口,如-p 8080(宿主机):8080(容器)

-p ip:主机端口:容器端口

-p 主机端口:容器端口(常用)

-p 容器端口

容器端口

-P(大写) # 随机指定端口

# 测试,启动并进入容器

[root@fedora ~]# docker run -it centos /bin/bash

[root@c0b3a59a4b40 /]# ls # 查看容器内的centos,基础版本,很多命令都不完善!

bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

# 从容器中退回主机

[root@c0b3a59a4b40 /]# exit

exit

[root@fedora ~]# ls

anaconda-ks.cfg

列出所有运行的容器

# docker ps 命令

# 列出当前正在运行的容器

-a # 列出当前正在运行的容器+历史运行过的容器

-n=? # 列出最近创建的容器

-q # 只显示容器的编号


[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES


[root@fedora ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c0b3a59a4b40 centos "/bin/bash" 8 minutes ago Exited (0) 7 minutes ago amazing_mestorf

4e2856b49ab3 feb5d9fea6a5 "/hello" 5 hours ago Exited (0) 5 hours ago practical_elion


[root@fedora ~]# docker ps -n=1

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c0b3a59a4b40 centos "/bin/bash" 8 minutes ago Exited (0) 8 minutes ago amazing_mestorf


[root@fedora ~]# docker ps -aq

c0b3a59a4b40

4e2856b49ab3

退出容器

exit # 退出容器,该容器停止运行

Ctrl+P+Q # 退出容器,该容器继续运行

[root@fedora ~]# docker run -it centos /bin/bash

[root@850f79cbaca0 /]# exit

exit

[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES


[root@fedora ~]# docker run -it centos /bin/bash

[root@3ba161d2b592 /]# [root@fedora ~]#

[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3ba161d2b592 centos "/bin/bash" 26 seconds ago Up 25 seconds modest_agnesi

删除容器

docker rm 容器ID # 删除指定的容器(不能删除正在运行的容器,如果要强制删除 rm -rf)

docker rm -f $(dcoker ps -aq) # 删除所有的容器

dcoker ps -a -q | xargs docker rm # 删除所有的容器

启动和停止容器

docker start 容器id #启动容器

docker restart 容器id #重启容器

docker stop 容器id #停止当前正在运行的容器

docker kill 容器id #强制停止当前容器

4.其它常用命令

后台启动容器

# dcoker run -d 镜像名

[root@fedora ~]# docker run -d centos

e1050d6f94c31e0285f0ac13cd1660db486149b0a6c50b76eb514ce01491c04b

[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

# 问题:dcoker ps,发现centos停止了

# 常见的坑:dcoker容器使用后台运行,就必须要有一个前台进程,docker发现没有进程,就会自动停止

# 如:nginx,容器启动后,发现自己没有提供服务,就会立即停止,就是没有进程了

查看日志

docker logs -f -t --tail 容器,没有日志


#自己编写一段shell脚本

[root@fedora ~]# docker run -d centos

e1050d6f94c31e0285f0ac13cd1660db486149b0a6c50b76eb514ce01491c04b

[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES


[root@fedora ~]# docker run -d centos /bin/bash -c "while true;do echo hello;sleep 1;done"

988efb2679049c3b1ea591b049d6be23e3c040caff84af67c27c1cd9098927ca

[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

988efb267904 centos "/bin/bash -c 'while…" 6 seconds ago Up 4 seconds boring_blackburn


# 显示日志

-tf # 显示日志(一直更新)

--tail number # 显示n行日志

查看容器中进程的信息

# docker top 容器ID

[root@fedora ~]# docker top 988efb267904

UID PID PPID C STIME TTY TIME CMD

root 33380 33362 0 15:38 ? 00:00:00 /bin/bash -c while true;do echo hello;sleep 1;done

root 34367 33380 0 15:50 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看镜像的元数据

docker inspect 容器ID

进入当前正在运行的容器

# 我们通常容器都是以后台方式运行的,需要进入容器,修改一些配置


# dcoker exec -it 容器ID bashshell


[root@fedora ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

988efb267904 centos "/bin/bash -c 'while…" 19 minutes ago Up 19 minutes boring_blackburn


[root@fedora ~]# docker exec -it 988efb267904 /bin/bash

[root@988efb267904 /]# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 07:38 ? 00:00:00 /bin/bash -c while true;do echo hello;sleep 1;done

root 1236 0 0 07:59 pts/0 00:00:00 /bin/bash

root 1269 1 0 07:59 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

root 1270 1236 0 07:59 pts/0 00:00:00 ps -ef

# 方式二

docker attach 容器id

#测试

docker attach 988efb267904

正在执行当前的代码...


区别

# docker exec # 进入当前容器后开启一个新的终端,可以在里面操作。(常用)

# docker attach # 进入容器正在执行的终端

从容器内拷贝文件到主机

[root@fedora ~]# docker run -it centos # 进入容器

[root@3593a6485284 /]# cd /home/

[root@3593a6485284 home]# touch hello # 在容器内新建一个文件

[root@3593a6485284 home]# ls

hello

[root@3593a6485284 home]# exit # 退出容器

exit

[root@fedora ~]# docker ps -a # exit退出,容器被关闭。但不影响文件的拷贝

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3593a6485284 centos "/bin/bash" 3 minutes ago Exited (0) 8 seconds ago sad_jepsen


[root@fedora ~]# docker cp 3593a6485284:/home/hello /root

[root@fedora ~]# ls

anaconda-ks.cfg hello

Tags:

最近发表
标签列表