记录一下 Docker 命令

安装文档地址:https://docs.docker.com/engine/install/

Docker 加速

可以到阿里云 - 容器镜像服务 - 镜像加速器,获取自己的加速地址

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Dockerfile 文件

FROM node:10-alpine

# 设置容器启动后的默认运行目录
WORKDIR /app

# 复制代码
COPY . .

# 运行命令,安装依赖
# RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
RUN yarn install --production

# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
# 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
# 例如 CMD cd /app && ./start.sh
CMD ["node", "/app/src/index.js"]

Dockerfile 编译成 image

docker build -t docker-101 .

-t 设置镜像名字和版本号

目录挂载

Named Volumes 和 Bind Mounts 两种挂载方式,都是使用 -v 参数挂载:

Named Volumes:
my-volume:/usr/local/data

Bind Mounts:
/path/to/data:/usr/local/data

-w 当前工作目录。

docker run -dp 3000:3000 \
-w /app -v $PWD:/app \
node:10-alpine \
sh -c "yarn install && yarn run dev"

Docker network

docker network create app 创建

Options

--name="容器新名字" ,为容器指定一个名称
-d : 后台运行容器并返回容器 ID,也即启动守护式容器(后台运行);

-i : 以交互模式运行容器,通常和-t 同时使用
-t : 为容器重新分配一个伪输入终端,通常和-i 同时使用
也即启动交互式容器(前台有伪终端,等待交互) 如: docker run -it。进去容器后不停止退出:ctrl+p+q

-P : 随机端口映射 大写 P
-p : 指定端口映射 小写 p

--network-alias : 网络别名,使用容器名称连接容器服务

Docker 相关命令

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表
docker exec -it id bash 进入容器