标签:容器 run centos 命令 docker root ID
一、docker容器
容器就是对外提供服务的一个实例。
容器启动的必要条件:容器内至少有一个进程运行在前台
#1.说明:我们有了镜像才可以创建容器,Linux,下载一个centos镜像来测试学习
[root@docker ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
1、创建容器
# 格式
docker run [参数] [镜像名称] [运行容器的启动命令]
# 参数
-d : 以守护进程的方式运行一个容器(后台运行)
docker run -d [镜像名称] [cmd]
--name : 指定容器的名称
docker run -d --name [容器名称] [镜像的名称] [cmd]
-p : 指定端口映射
docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
-P :随机端口映射
docker run -d -P [镜像名称] [cmd]
-i : 打开标准输出
-t : 创建一个伪终端
docker run -it [镜像名称] [cmd]
-v : 挂载目录到容器中
docker run -v 宿主主机目录:容器内目录 [镜像名称] [cmd]
--rm : 容器生命周期结束时立即删除
docker run --rm [镜像名称] [cmd]
-e : 在容器中创建一个环境变量
docker run -e NAME=Centos -d [镜像名称] [cmd]
--link : 连接上一个容器,实现网络互通
docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
-h : 设置容器主机名
docker run -h "主机名" [镜像名称] [cmd]
#实例
[root@docker ~]# docker run -it centos /bin/bash #启动并进入容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@bf0b90672aed /]#
[root@bf0b90672aed /]# ls #查看容器内的centos,基础版本,很多命令都是不完善的
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@bf0b90672aed /]# exit #从容器中退回主机(容器停止并退出)
exit
[root@docker ~]#
Ctrl+p+q快捷键:容器不停止退出
# docker run 运行流程
1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID
2、查看本机的容器列表
# 格式
docker ps [参数]
docker ps # 查看当前系统中正在运行的容器列表
#参数
-a : 查看系统中所有的容器。
-q : 仅显示容器的ID
-n=: 显示最近创建的容器
3、停止和启动一个容器
# 停止
docker stop [容器的ID|名称]
# 启动(该容器必须是系统已经存在的容器)
docker start [容器的ID|名称]
# 重启
docker restart [容器的ID|名称]
#杀死
docker kill [容器的ID|名称]
#实例
[root@docker ~]# docker run -it centos #先运行一个容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@6f5810623fa2 /]# exit #退出并停止运行
exit
[root@docker ~]# docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker ~]# docker ps -a #查看历史运行过的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f5810623fa2 centos "/bin/bash" 35 seconds ago Exited (0) 23 seconds ago musing_borg
[root@docker ~]# docker start 6f5810623fa2 #开始centos容器
6f5810623fa2
[root@docker ~]# docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f5810623fa2 centos "/bin/bash" About a minute ago Up 12 seconds musing_borg
[root@docker ~]# docker stop 6f5810623fa2 #停止centos容器
6f5810623fa2
[root@docker ~]# docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4、删除容器
# 格式
docker rm [容器名称|ID]
# 参数
-f : 强制删除
docker rm -f [容器名称|ID]
# 清空容器
docker rm $(docker ps -a -q)
docker ps -a -q | xargs docker rm
#实例
[root@docker ~]# docker rm 1714ae45e360 #删除正在运行容器会报错
Error response from daemon: You cannot remove a running container 1714ae45e360243fee68c907f335b34c83fb70217f4216e33a615a71ca66d23a. Stop the container before attempting removal or force remove
[root@docker ~]# docker rm -f 1714ae45e360 #强制删除
1714ae45e360
[root@docker ~]# docker ps -aq
bf0b90672aed
7518288dddfb
64a7c388b5f8
[root@docker ~]# docker rm -f $(docker ps -aq) #删除所有容器
bf0b90672aed
7518288dddfb
64a7c388b5f8
[root@docker ~]# docker ps -aq
5、查看容器详细信息
# 格式
docker inspect [容器名称|ID]
# 怎么监控docker运行状态?
docker inspect -f '{{.State.Running}}' nginx
6、复制命令
1、复制到容器内
docker cp [宿主主机文件路径] 容器ID:容器内路径
2、复制到容器外
docker cp 容器ID:容器内路径 [宿主主机文件路径]
#实例(从容器内拷贝文件到主机上)
[root@docker ~]# docker run -it centos /bin/bash #先运行一个容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@94654381fb70 /]# cd /home #切换到家目录
[root@94654381fb70 home]# ls
[root@94654381fb70 home]# touch test.java #建一个文件
[root@94654381fb70 home]# ls
test.java
[root@94654381fb70 home]# exit #退出
exit
[root@docker ~]# docker ps -a #查看进程号
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94654381fb70 centos "/bin/bash" 26 minutes ago Exited (0) 23 minutes ago
[root@docker ~]# docker cp 94654381fb70:/home/test.java /home #拷贝容器里那个文件到主机的家目录
[root@docker ~]# cd /home #切换到主机的家目录
[root@docker home]# ls #查看拷贝的文件
test.java
7、进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置,进入容器一般有四种
1、exec : 在容器外向容器内执行一个命令(官方推荐)
docker exec [参数] [容器的ID] [cmd]
#实例:
[root@docker ~]# docker exec -it a428029e2e1b /bin/bash
2、attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了)
docker attach [容器ID|名称]
#实例:
[root@docker ~]# docker attach a428029e2e1b
[root@a428029e2e1b /]#
3、nsenter : 建立一个管道连接上容器主ID
nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
4、ssh : 通过ssh连接
============================================
进入容器的区别:
- exec :进入容器后开启一个新的终端,可以在里面操作(常用)
- attach :进入容器正在执行的终端,不会启动新的进程
8.查看日志
#1.本身容器没有日志
docker logs -f -t --tail [容器ID/容器名称]
#2.运行一个程序(编写一个脚本)
docker run -d centos /bin/bash -c "while true; do echo 123;sleep 1;done"
-c:指定动作
#3.查看运行的容器
[root@docker ~]# docker ps
CONTAINER ID IMAGE
73f41ee70158 centos
#4.显示日志
docker logs -tf --tail 10 73f41ee70158 #显示10条日志内容
9.查看容器内部的进程信息
#1.查看容器内部的进程信息(容器必须是运行的,必须用容器ID查看)
[root@docker ~]# docker top a428029e2e1b
UID PID PPID C STIME TTY TIME CMD
root 16108 16088 0 01:10 pts/0 00:00:00 /bin/bash
标签:容器,run,centos,命令,docker,root,ID 来源: https://blog.csdn.net/weixin_52492280/article/details/115053593
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。