1. 查看linux系统centos版本
cat /etc/centos-release
2. 使用官方安装脚本自动安装 (仅适用于公网环境)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
等待安装完成进行验证
docker version
3. 启动docker
systemctl start docker
常用命令
查看容器日志
docker logs [-f] containerId
容器的交互模式
docker exec -it containerId sh
使用pstree查看容器的进程
yum install psmisc
pstree -halps processId
Dockerfile
编写一个py文件 hello.py
print("hello world")
编写Dockerfile文件
FROM ubuntu:21.04
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y python3.9 python3-pip python3.9-dev
ADD hello.py /
CMD ["python3", "/hello.py"]
构建镜像
docker image build -t hello .
-t 镜像名称
. build context当前目录
运行镜像,会输出hello world
docker run -it hello
修改镜像名称
docker tag hello jiangli/hello:1.0
登录docker hub
docker login
向docker hub推送镜像
docker push jiangli/hello:1.0
ADD 和 COPY 的区别:都可以复制,区别ADD会自动解压缩
WORKDIR 切换工作目录
以交互的方式运行容器并且在退出后删除容器
docker run --rm -it hello
Dockerfile示例
FROM python:3.9.5-slim
COPY app.py /src/app.py
RUN pip install flask
WORKDIR /src
ENV FLASK=app.py
EXPOSE 5000
CMD ["flask", "run", "-h", "0.0.0.0"]
容器网络
创建自定义网络
docker network create -d bridge networkName
容器可以同时连接两个网络
容器box3再连接bridge网络
docker network ls
docker network conncet networkName containerId
docker container inspect containerId
从bridge网络移除box3
docker network disconnect networkName containerId
端口转发
iptables -t nat -nvxL
容器外的80端口映射到容器内的80端口
docker-compose
Linux用户需要自行安装
最新版本号可以在这里查询 Releases · docker/compose · GitHub
sudo curl -L https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
由于网络问题,常常安装不上,换成国内的
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
compose 文件的结构和版本
docker compose文件的语法说明 Compose specification | Docker Documentation
基本语法结构