Docker

参考教程

参考菜鸟教程

docker run 的 参数记录

参数 解释
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d 后台运行容器,并返回容器ID;
-p 指定端口映射, 格式为 : 主机(宿主)端口:容器端口
-t 为容器重新分配一个 伪输入终端,通常与 -i 一起使用
–name=“nginx-lb” 为容器指定一个名称
–dns 8.8.8.8 指定容器使用的 DNS 服务器,默认和宿主一致
–dns-search baidu.com 指定容器DNS 搜索域名,默认和宿主机一致
-h 指定容器的 hostname
-e username=“lyr” 指定环境变量
-env-file=[] 从指定文件读入环境变量
-cpuset=“0-2” or –cpuset=“0,1,2” 绑定容器到指定 CPU 运行
-m 设置容器使用内存的最大值
–net=“bridge” 指定容器的网络连接类型,支持 bridge/host/none/container 四种类型
–link=[] 添加链接到另一个容器
–expose=[] 开放一个端口或者一组端口
–volume, -v 绑定一个卷

docker 设置开机启动

1
systemctl    enable docker.service

docker 命令演示

--rm 表示临时容器,容器停止 就会删除

-p 指定端口映射

1
2
3
4
5
6
7
docker run --name myNginx --rm -p 80:80 nginx


docker logs myNginx

# 进入 虚拟操作系统终端
docker exec -it myNginx bash

使用示例

运行nginx

1
2
3
docker run --name mynginx -d nginx:latest
# 以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest

其他使用示例

1
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

退出时候立刻删除

在 Docker 容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据。

但是,对于 foreground 容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置 –rm 选项,这样在容器退出时就能够自动清理容器内部的文件系统。

示例如下:

1
docker run --rm ba-208

等价于:

1
docker run --rm=true ba-208

显然,–rm 选项不能与 -d 同时使用(或者说同时使用没有意义),即只能自动清理 foreground 容器,不能自动清理detached容器。

注意,–rm 选项也会清理容器的匿名data volumes。

所以,执行 docker run 命令带 –rm命令选项,等价于在容器退出后,执行 docker rm -v

容器操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 查看容器细节
docker inspect <containerid>
#进入容器
docker attach
# 通过nsenter 查看
pid=$(docker inpect --format "{{.State.Pid}}" <container>)

# 查看容器namespace
nsenter --target $pid --mount --uts --ipc --net --pid

#拷贝文件至容器内
docker cp file1 <containerid>:/file-to-path