docker第三篇 容器命令
docker 第三篇
1.容器
2.镜像
3.仓库
容器由镜像实例化出来;容器转存成镜像;镜像提交或拉取到仓库;
docker 容器
特性
启动速度快
运行密度高
隔离性高
迁移性强
命令
创建容器
docker run [參數] [鏡像名稱][运行容器的启动命令]
運行1.16.1版本的nginx
eg:
[root@docker lzl]# docker run -d nginx:1.16.1
Unable to find image 'nginx:1.16.1' locally
1.16.1: Pulling from library/nginx
54fec2fa59d0: Pull complete
5546cfc92772: Pull complete
50f62e3cdaf7: Pull complete
Digest: sha256:d20aa6d1cae56fd17cd458f4807e0de462caf2336f0b70b5eeb69fcaaf30dd9c
Status: Downloaded newer image for nginx:1.16.1
61b255d000fb220243be6e7a5df54818cd8cf33916a11c1bcc195bcc9645f101
#本地鏡像不存在的情況下,會从网络拉取一个1.16.1
#參數
-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]
- docker run 运行流程
1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID
查看容器
docker ps [參數]
docker ps #查看當前系統中正在運行的容器列表
#參數
-a : 查看系统中所有的容器。
-q : 仅显示容器的ID
eg
[root@docker lzl]# docker ps -q
61b255d000fb
停止容器
docker stop [容器的ID|名称]
啓動容器
docker start [容器的ID|名称]
#(该容器必须是系统已经存在的容器)
刪除容器
docker rm [容器名称|ID]
# 参数
-f : 强制删除
docker rm -f [容器名称|ID]
# 清空容器
docker rm $(docker ps -a -q)
查看容器
docker inspect [容器名称|ID]
[root@docker lzl]# docker inspect nginx:1.16.1
複製
#复制到容器内
docker cp [宿主主机文件路径] 容器ID:容器内路径
#复制到容器外
docker cp 容器ID:容器内路径 [宿主主机文件路径]
进入容器
# 进入容器一般有四种
1、exec : 在容器外向容器内执行一个命令(官方推荐)
docker exec [参数] [容器的名称|ID] [cmd]
2、attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了)
docker attach [容器ID|名称]
3、nsenter : 建立一个管道连接上容器主ID
nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
4、ssh : 通过ssh连接
eg:
[root@docker lzl]# docker exec -it musing_meninsky bash
查看日志
docker logs [鏡像名稱]
#參數
-f 实时打印docker log
进阶操作
映射端口
docker run -p 容器外端口:容器内端口 #容器外端口可以理解爲宿主机
eg
[root@docker lzl]# docker run -d -p 80:80 nginx:1.16.1
fd97fa3802742d4d78d7e1ccfecaffaf5f787190305dc98c4d7677537cee6a9c
docker ps 查看進程狀態
curl localhost:80 返回了welcome to nginx
挂載數據卷
docker run -v 容器外目錄:容器内目錄 #容器外目录可以理解爲宿主机
传递环境变量
docker run -e 環境变量key:環境变量value
eg:
docker run --rm -e OPTS=abcld nginx:1.16.1 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=59f26035c4a0
OPTS=abcld
NGINX_VERSION=1.16.1
NJS_VERSION=0.3.8
PKG_RELEASE=1~buster
HOME=/root
添加多个环境变量
-e -e -e -e
领悟下、
容器内安装软件(工具)
yum|apt-get|apt等