docker常用命令(二)
docker常用命令汇总
3)docker容器命令
- docker run 启动容器
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数
docker run -it ubuntu /bin/bash
docker run --name=ubuntu_007 -it ubuntu /bin/bash
- docker ps 列出当前正在运行的容器命令
Usage: docker ps [OPTIONS] [root@WIND ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 159540a83147 ubuntu "bash" 5 seconds ago Up 4 seconds flamboyant_bouman e5b9db89eb05 ubuntu "/bin/bash" 26 seconds ago Up 25 seconds ubuntu_007 [root@WIND ~]#
docker ps -a 列出当前正在运行的及历史运行过的容器
-n参数显示最近创建的n个容器,包括已经停止的容器
3. docker run 启动的容器,怎么退出
exit命令直接退出,容器会停止
ctrl + p + q 退出,容器不会停止
启动已经停止的容器
docker start 容器ID或者容器名
停止正在运行的容器
docker stop 容器ID或者容器名
重启正在运行的容器
docker restart 容器ID或者容器名
强制停止容器
docker kill 容器ID或者容器名
删除已经停止发容器
docker kill 容器ID或者容器名(-f参数强制删除正在运行的容)
删除当前主机所有的容器,包括正在运行的,操作之后容器历史记录都无法再插到
docker rm -f $(docker ps -qa)
docker ps -a -q | xargs docker rm -f
[root@WIND ~]# docker rm -f $(docker ps -qa) d3a76c59d9f7 a377d10709de 81ba5bce6a7e f8c8b6d00b0a 75a818ad74c4 9397e6a0cd0e a5b4c365f498 a314baa8f432 02d02cc63721 bc0b5a5aff68 5edb0ed93c92 cd4154169336 34ce13d1b457 269efecd4202 1edfabfbc754 [root@WIND ~]# [root@WIND ~]# [root@WIND ~]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@WIND ~]#
- 启动容器后台运行服务
docker run -d
docker 容器在后台运行就必须有一个前台进程,容器运行的命令如果不是一直挂起的命令(top, tail等),就会马上退出
docker logs 查看容器日志
[root@WIND ~]# docker logs cfc74b0d5a66 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2022/02/27 09:58:55 [notice] 1#1: using the "epoll" event method 2022/02/27 09:58:55 [notice] 1#1: nginx/1.21.5 2022/02/27 09:58:55 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 2022/02/27 09:58:55 [notice] 1#1: OS: Linux 4.18.0-193.28.1.el8_2.x86_64 2022/02/27 09:58:55 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2022/02/27 09:58:55 [notice] 1#1: start worker processes 2022/02/27 09:58:55 [notice] 1#1: start worker process 31 2022/02/27 09:58:55 [notice] 1#1: start worker process 32
docker top 查看容器内部运行的进程
[root@WIND ~]# docker top cfc74b0d5a66 UID PID PPID C STIME TTY TIME CMD root 9575 9555 0 17:58 ? 00:00:00 nginx: master process nginx -g daemon off; 101 9626 9575 0 17:58 ? 00:00:00 nginx: worker process 101 9627 9575 0 17:58 ? 00:00:00 nginx: worker process
docker inspect ,查看容器内部
docker exec -it 容器ID bashshell , 进入容器并以命令行交互
docker attach 容器ID
[root@WIND ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cfc74b0d5a66 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp stupefied_chebyshev f1f3be2dbfc5 ubuntu "/bin/bash" 28 minutes ago Up 28 minutes u009 e063ad4e501e ubuntu "/bin/bash" 32 minutes ago Up 32 minutes u007 [root@WIND ~]# docker attach e063ad4e501e root@e063ad4e501e:/# exit exit [root@WIND ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cfc74b0d5a66 nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp stupefied_chebyshev f1f3be2dbfc5 ubuntu "/bin/bash" 28 minutes ago Up 28 minutes u009 [root@WIND ~]#
exit -it 和attach 进入容器是有区别的
一般情况下,我们更常用exec -it
docker top查看容器的进程
[root@WIND ~]# docker top f1f3be2dbfc5
UID PID PPID C STIME TTY TIME CMD
root 9105 9085 0 17:45 pts/0 00:00:00 /bin/bash
[root@WIND ~]#
在另一个终端进入容器
[root@WIND ~]# docker exec -it f1f3be2dbfc5 bash
root@f1f3be2dbfc5:/#
再次docker top, 可以看到多了一个bash进行
root@f1f3be2dbfc5:/#
[root@WIND ~]# docker top f1f3be2dbfc5
UID PID PPID C STIME TTY TIME CMD
root 9105 9085 0 17:45 pts/0 00:00:00 /bin/bash
root 9893 9085 4 18:18 pts/1 00:00:00 bash
[root@WIND ~]#
同样流程用attach参数去操作,就不会看到有多一个bash进程
docker cp 拷贝docker容器里面的文件
从容器拷贝文件到主机 [root@WIND ~]# docker cp /root/posts.sql f1f3be2dbfc5:/tmp/ [root@WIND ~]# [root@WIND ~]# docker exec -it f1f3be2dbfc5 /bin/bash root@f1f3be2dbfc5:/# ls /tmp/ a.txt posts.sql 拷贝文件到容器 [root@WIND ~]# docker cp f1f3be2dbfc5:/tmp/a.txt /opt/ [root@WIND ~]# ls /opt/ a.txt bak_db_log.txt bak_html_log.txt containerd [root@WIND ~]#
docker export 导出整个容器的内容作为一个归档文件(相当于备份整个容器)
docker import 导出的docker归档文件恢复成为一个镜像
[root@WIND ~]# docker export f1f3be2dbfc5 > u009.tar.gz [root@WIND ~]# [root@WIND ~]# cat u009.tar.gz | docker import - u009_from_tar:latest_009 sha256:b94b09f8d67331478049c9d10c023503183c9fecf98e49b6277020261055f465 [root@WIND ~]# 查看恢复的镜像 [root@WIND ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE u009_from_tar latest_009 b94b09f8d673 4 seconds ago 73.4MB nginx latest 605c77e624dd 8 weeks ago 141MB ubuntu latest ba6acccedd29 4 months ago 72.8MB [root@WIND ~]# [root@WIND ~]# docker run -it b94b09f8d673 /bin/bash root@ac528e12cb0e:/# ls /tmp/ a.txt posts.sql root@ac528e12cb0e:/#
最后可以看到新恢复的docker 容器里面,是有我们之前拷贝进去的文件的
可以通过这样的操作,来现实数据迁移的,且保证数据的一直性
常用命令汇总:



