前言
前面简单的介绍了镜像的基本操作,镜像的操作介绍完成后,肯定要到容器了,今天安静介绍下容器的使用方法。
启动容器
有镜像才能存在容器,必须有镜像的基础上,才能使用容器,容器启动通过 docker run 镜像ID
[root@anjing ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.7.12-alpine3.14 f0c1a69798c7 6 weeks ago 41.9MB
jenkins 2.60.3 cd14cecfdb3a 3 years ago 696MB
[root@anjing ~]# docker run -it f0c1a69798c7
Python 3.7.12 (default, Nov 13 2021, 04:28:59)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
这里通过it 启动的目的就是为了给容器一个前台可执行进程,如果不提供可执行进程的话,docker会自动退出。
其他执行命令
# 常用参数说明
--name="Name" # 给容器指定一个名字
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小写),
列出运行中的容器
可以通过 docker ps 进行查看运行中的容器列表
[root@anjing ~]# docker run -itd f0c1a69798c7
11e61554d64c493a20f99b947b4d0073b7cf83086dfd57c68969edcbdfc8d1a8
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11e61554d64c f0c1a69798c7 "python3" 5 seconds ago Up 4 seconds confident_ritchie
停止运行中的容器
可以通过 docker stop 容器ID 进行来停止运行中的容器
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11e61554d64c f0c1a69798c7 "python3" 5 seconds ago Up 4 seconds confident_ritchie
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11e61554d64c f0c1a69798c7 "python3" About a minute ago Up About a minute confident_ritchie
[root@anjing ~]# docker stop 11e61554d64c
11e61554d64c
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
其他命令
docker start (容器id ) # 启动容器
docker restart (容器id) # 重启容器
docker kill (容器id ) # 强制停止容器
删除容器
想要删除不需要的容器,可以通过 docker rm 进行删除
docker rm 容器id # 删除指定容器
查看容器日志
这里安静先通过执行docker执行python脚本,在进行查看运行的docker的日志,查询docker命令 docker log -f -t 容器ID
[root@anjing ~]# docker run -id -v /home/anjing/123:/home/anjing/123 -w /home/anjing/123 f0c1a69798c7 python 123.py
6a8e52fd90c29498f379aead9f3d04ad31d1cef459c83c94ae74b6a729344485
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a8e52fd90c2 f0c1a69798c7 "python 123.py" 3 seconds ago Up 3 seconds lucid_maxwell
[root@anjing ~]# docker logs -f -t 6a8e52fd90c2
2021-12-30T02:57:05.744383547Z hellp world anjing!
2021-12-30T02:57:05.744427553Z hellp world anjing!
2021-12-30T02:57:05.744431149Z hellp world anjing!
2021-12-30T02:57:05.744433297Z hellp world anjing!
2021-12-30T02:57:05.744435459Z hellp world anjing!
2021-12-30T02:57:05.744437511Z hellp world anjing!
2021-12-30T02:57:05.744439639Z hellp world anjing!
2021-12-30T02:57:05.744441691Z hellp world anjing!
2021-12-30T02:57:05.744443693Z hellp world anjing!
2021-12-30T02:57:05.744445738Z hellp world anjing!
命令详解
-v /home/anjing/123:/home/anjing/123 表示将主机的当前目录挂在到容器上
-w /home/anjing/123 表示将该目录设定为执行目录
进入正在运行的容器
先通过后台运行python容器,然后在进入到运行的容器中。 docker exec -it 容器ID
[root@anjing ~]# docker run -id f0c1a69798c7
1eb2e3719ada07b85fa4467edb7a9c2abbc207811bf840a7ecc0e1584b57dca4
[root@anjing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1eb2e3719ada f0c1a69798c7 "python3" 3 seconds ago Up 2 seconds clever_wing
[root@anjing ~]# docker exec -it 1eb2e3719ada python
Python 3.7.12 (default, Nov 13 2021, 04:28:59)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>