Docker基础入门到放弃
操作环境
- Linux内核3.10
- CentOS~7.9发行版
安装及配置
点击查看
安装需要的软件包
1 | sudo yum install -y yum-utils |
设置国内镜像仓库
1 | sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
更新yum软件包索引
1 | yum makecache fast |
安装docker-ce
1 | sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin |
启动docker+开机自启动
1 | systemctl start docker && systemctl enable docker |
配置docker镜像加速
1 | sudo mkdir -p /etc/docker |
检查docker是否安装好
1 | docker info |
测试一下hello-world
1 | docker pull hello-world # 可以不需要这一步直接下一步,但是初学者建议多敲敲多熟悉熟悉代码 |
1 | docker run hello-world |
相关知识
点击查看
镜像管理
点击查看
增加镜像方法
通过仓库获取镜像
1 | docker pull $image_name |
1 | docker pull $image_name:$version type |
通过别人打包的镜像导入
- 导出
1
docker image save $image_name -o 目录/镜像名.tgz #-o === >
- 导入
1
docker image load -i 目录/镜像名字.tgz #-i === <
通过容器构建镜像
1 | docker commit $container_id $image_name |
通过Dockerfile构建镜像
Dockerfile参数
| 参数 | 解释 |
|---|---|
| FROM | 基于什么系统发行版 |
| MAINTAINER | 作者信息 |
| RUN | 运行Linux命令 |
| ADD | 添加文件到容器 |
| COPY | 复制文件到容器 |
| WORKDIR | 指定工作目录 |
| VOLUME | 容器数据挂载 |
| EXPOSE | 指定容器对外开放的端口 |
| CMD | cmd指令 |
| ENTRYPOINT | 替换cmd,cmd给它传递参数 |
| ENV | 给容器设置环境变量(构建镜像,及容器运行都可以使用) |
| ARG | 给容器设置环境变量(仅构建镜像使用) |
| USER | 用于改变环境,用于切换用户 |
创建Dockerfile
1 | touch Dockerfile |
编辑Dockerfile
1 | vi Dockerfile |
构建镜像
1 | docker build . |
构建镜像并自定义镜像名
1 | docker build -t '镜像名' . |
删除指定镜像
1 | docker rmi $image_name/id |
强行删除指定镜像
1 | docker rmi -f $image_name/id |
删除全部镜像(危险)—需要没有运行中的容器
1 | docker rmi `docker images -aq` |
改镜像名字
1 | docker tag $image_id $new_name |
查看
查看仓库镜像列表
1 | docker search $image_name |
查看本地镜像列表
1 | docker iimages |
查看镜像id
1 | docker images |
自定义查看镜像id和name,其它格式照推
1 | docker images --format "table {{.ID}}\t{{.Repository}}\t" |
查看镜像详细信息
1 | docker image inspcet $image_id |
1 | docker image inspcet afb |
查询镜像的构建历史或分层
1 | docker history $image_id |
容器管理
点击查看
参数
| 参数 | 解释 |
|---|---|
| -d | 在容器内运行不占用当前终端 |
| –rm | 中止进程后自动删除容器 |
| –name $image_name | 自定义容器名字 |
| -it | 开启交互式,进入容器内 |
| -v | 数据挂载 |
| -p 主机端口:容器端口 | 端口映射 |
| -P | 随机端口映射 |
| –restart=always | 监听容器,挂了重启,不和–rm一起用 |
运行容器
1 | docker run 参数 $image_name CMD |
进入容器
1 | docker run -it $container_id bash |
1 | docker exec -it $container_id bash |
退出容器
1 | exit |
重启容器
1 | docker restart $container_id |
删除容器
删除指定容器
1 | docker rm $container_id |
强行删除指定容器
1 | docker rm -f $container_id |
删除全部容器(危险)
1 | docker rm -f `docker ps -aq` |
查看
查看活着的容器id
1 | docker ps |
查看活着和挂了的容器id
1 | docker container ls -a |
1 | docker container ls -a |
查看容器日志
1 | docker logs $container_id |
查看容器日志(实时更新)
1 | docker logs -f $container_id |
查看容器的详细信息
1 | docker container inspect $container_id |
查看容器内资源情况命令
1 | docker inspect $container_id |
查看容器内进程命令
1 | docker top $container_id |
查看容器的所有信息
1 | docker inspect $container_id |
查看容器端口转发情况
1 | docker port $container_id |
查看容器内ip
1 | docker inspect --format '{{.NetworkSettings.IPAddress}}' $container_id |
网络管理
点击查看
安装brctl工具
1 | yum -y install bridge-utils |
自定义docker容器网络
运行一个没有网卡的容器(保留当前窗口)
1 | docker run -it --network none centos bash |
获取容器ID(新打开ssh窗口)
1 | docker inspect -f {{.State.Pid}} $container_ID |
创建netns
1 | mkdir /var/run/netns |
创建VETH接口对
1 | ip link add A type veth peer name B |
将A端添加到容器并改名
1 | 添加到容器:ip link set A netns $pid |
将B端添加到docker0
1 | 添加:brctl addif docker0 B |
自定义网桥
创建
1 | docker network create [OPTIONS] NETWORK |
容器加入网桥
1 | docker network connect <bridge> container |
容器断开网桥
1 | docker network disconnect <bridge> container |
查看本地网络列表
1 | docker network ls |
删除自定义网桥
1 | docker network rm <bridge> |
docker run命令的网络配置参数
设置容器的网络链接
1 | 示例1:docker run --net bridge/host/container:container_id/none image_name |
设置容器的IP地址
1 | 例子1:docker run -it --rm --network mynet --ip x.x.x.x image bash |
设置网络接口MAC地址,DNS,主机名
1 | 例子:docker run -it --rm --mac-address 32:56:ac:ef:22:33 centos bash |
容器之间的网络通信
1 | * 容器都连接到同一个网络(参见前面《自定义桥接网络》) |
修改docker服务配置文件
1 | * 修改docker0网桥的默认网段 |
存储管理
点击查看
1 | 1、联合文件系统 |
卸载
点击查看
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 YINLI!
评论
