阮一峰docker教程
菜鸟的docker教程
docker安装
docker常用命令
- 对docker镜像文件的操作
对hello-world镜像进行查找和拉取,其中:latest
指拉取最新版,可以更改指定别的版本,其实pull
这一步不是必须的,如果在你run
的时候,本地没有镜像,那么他会自动拉取。还有镜像文件的删除。
docker search hello-world:latest
docker pull hello-world
docker rmi <ID>
- 创建docker,create:创建但不运行,后续需运行
docker start
;run:创建并运行,二者命令上有细微差别,比如create
没有-d
参数。
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 开始,停止,重启docker服务
docker start <容器名 或者 容器id>
docker stop <容器名 或者 容器id>
docker restart <容器名 或者 容器id>
docker rm <容器名 或者 容器id>
- 暂停,恢复容器中的所有进程,暂停时容器无法访问
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
- 容器内的操作,比如下边这条,就是在
coder-test
容器中运行/bin/bash
命令,就可以在docker
里边进行操作,在容器中开启一个交互模式的终端:
docker exec -it coder-test /bin/bash
- 列出容器
docker ps [options]
-a 显示所有容器(包括未运行的)
-q 只显示容器编号
-n 5 列出最近创建的5个容器
inspect
操作,获取镜像的源数据
docker images inspect <image_name>
docker inspect <container_name>
docker的启动命令
一条典型的docker启动命令
docker run -itd --name my-code -u root -p 8086:8080 -v /data/my-code:/home/coder/project -e PASSWORD=123456 codercom/code-server:latest --auth password
下边对其中的参数进行解释
别名 --name
--name otherName
给容器起一个别名方便自己使用。
端口映射 -p
-p
后边接的是外部访问docker run -p ip:hostPort:containerPort
,hostPort
就是你要用来外部访问的端口,containerPort
则是容器的端口。其中80
端口是默认的http
端口,如果使用他作为hostPort
,那么可以不用输端口号,直接使用ip
地址就可以访问。一般会缺省ip:
部分,默认值为0.0.0.0
,写成-p 80:8080
这样,代表任何都可以访问。- 或者可以直接
-P
,随机分配宿主端口号,容器端口号也不需要指定了。sudo nmap -sTU -O localhost
可以在docker里使用这条命令,查看他占用了什么端口。 - 在你没开始运行应用时,你可以使用
sudo docker image inspect <image_name>
去查看该容器得到信息,其中ContainerConfig:ExposedPorts
后边跟的端口号就是该容器运行时的containerPort
- 如果你需要映射多个端口,则需要多个
-p
参数
文件挂载 -v
-v
指的是文件挂载目录,其使用规则是-v
宿主机目录:容器内目录,设定之后就可以在宿主机的/home/coder/project
访问容器内的/home/coder/project
,如果没有此文件夹,他会自动创建,同理也可以使用容器中对应文件夹访问宿主机的对应文件夹。可以使用docker inspect <containerName>
,查看其中的Mounts
部分,查看挂载情况。当然,也可以不写,使用其他方式(如github)去保存文件。
指定用户 -u
-u $(id -u)
指的是用户名,这里不能直接填用户名,必须使用uid
,我太明白这一步有什么用,即使指定了用户名,也是在/home/coder
下,还是缺省吧。