写在前面
以下为docker学习总结,如果对您有帮助,还望点赞或评论,以便作者认识到问题,进而对文章进行更正和补充,感谢您。
目录
背景
Windows10下的Docker学习总结。
一、添加下载源
设置中的Docker Engine的json中添加
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://3laho3y3.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"http://f1361db2.m.daocloud.io"
]
二、docker常用命令
对容器
- 查看所有容器:docker ps -a
- 查看在运行的容器:docker ps
- 启动容器:docker start container_ID
- 进入容器: docker exec -it container_ID /bin/bash
docker attach container_ID
- 停止容器:docker stop container_ID
- 删除容器 docker rm my_container
- 容器命名启动:docker run –dit --name container_name 容器镜像:标签 执行命名
对镜像
- 查看镜像:
docker images
- 删除镜像:
docker rmi <image_id>
- 删除镜像(images):
docker rmi <image_id>
(通过镜像(images)的id来指定删除谁) - 想要删除镜像(images)id为的image的话可以用:
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
(该名令为linux命令,Windows中直接面板中remove即可) - 要删除全部镜像(images)的话
docker rmi $(docker images -q)
Docker 容器使用:https://www.runoob.com/docker/docker-container-usage.html
删除容器和镜像相关命令:https://www.cnblogs.com/111testing/p/9715887.html
三、镜像拉取与使用
ubuntu镜像的相关
- 拉取
docker pull ubuntu:16.04 - 创建交互式的容器
docker run -i -t ubuntu:16.04 /bin/bash - ubuntu开发环境配置
更新apt:apt-get update
安装sudo:apt-get install sudo
安装:sudo add-apt-repository ppa:jonathonf/python-3.6
安装python3:sudo apt-get install python3.6
安装pip3:sudo apt-get install python3-pip
安装依赖库:sudo apt-get install build-essential python3-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev
参考
Python笔记——Ubuntu下安装pip3和Python的第三方库
Ubuntu:彻底卸载 Python - 进入container:
docker start 容器名#启动容器
docker exec -it 容器ID bash#进入容器
Nginx镜像相关
- 拉取
docker pull nginx
- 指定端口启动Nginx
docker run -d --name nginx01 -p 3344:80 nginx
-d 后台运行
-p 宿主机端口:容器内部端口,将容器80映射到主机3344端口,即主机通过3344端口即可访问容器内80端口
–name 容器命名为nginx01 - 测试:
curl localhost:3344
- 进入nginx:
docker exec -it nginx01 /bin/bash
Python镜像相关
- 拉取
docker pull python:3.6 - 创建交互式的容器
docker run -i -t python:3.6 /bin/bash猜测:进入控制台,自动在linux环境下,即python镜像拉取时,也会拉取linux环境,因此镜像较大。
- 进入Python容器(方法同上)
四、 镜像制作
- 说明
当对一个Docker容器配置完成后,通过docker commit即可将其打包为镜像文件,方便上传与使用。 - 代码语句
docker commit -a “提交的镜像作者” -m “一些关于image的介绍” containerID new_imageName:Tag例子:
docker commit -p -a “zhoulikun” -m “this is a test” ubuntu01 ubuntu_mine:16.04
即,将ubuntu01容器打包为ubuntu_mine镜像,
说明:本人的ubuntu01在基础ubuntu镜像(空白系统,只含基础命令)添加了sudo、python3.5、pip3、django
五、 数据卷挂载
宿主机文件上传到Docker容器
-
Docker cp命令方法
docker cp 本地路径 容器长ID:容器路径
参考:https://www.cnblogs.com/guohu/p/13125606.html
-
数据卷挂载法
docker run -it -v 主机目录:容器目录例子:
docker run --name ubuntu01 -it -v /C/Users/Administrator/Desktop/docker/shoot:/home ubuntu:16.04 /bin/bash
新创建一个容器,并将容器home目录和主机shoot目录连接docker inspect container_ID
查看container信息
关于挂载的相关信息:
挂载完成
六、Dockerfile文件制作与使用
- 创建Dockerfile文件(该文件无后缀)
参考写入Dockerfile文件:
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
- Dockerfile运行
控制台cd到Dockerfile文件下,输入docker build -t nginx:v3 .
语法:docker build -t 新镜像的名字:TAG dockerFIle文件路径
参考
实例
创建ubuntu镜像,要求配置python3.5,pip,Django.
-
Dockerfile内容:
#基础镜像
FROM ubuntu:16.04
#维护者信息
MAINTAINER zhou 1597027672@email.com
#镜像的操作指令
RUN apt-get -y update
RUN apt-get install sudo && sudo apt-get -y install python3
RUN sudo apt-get -y install python3-pip && pip3 install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
#CMD [,]各关键字说明:参考
-
启动Dockerfile:
cd到Dockerfile对应文件夹下;
输入:docker build -t my_image_dockerfile:v1 .
-
导出镜像
docker save -o my_image_dockerfile.tar my_image_dockerfile
七、Dockerfile发布到Dockerhub
-
登录docker.hun网站:https://hub.docker.com/
-
本机docker登录:
docker login -u docker.hub个人ID
登录成功在WINDOWS显示如下: -
修改镜像名:
docker tag 镜像ID dockerhub_ID/nginx:1.0
例如:docker tag nginx zhou2/nginx:1.0
zhou2为你注册的用户名,zhou2/nginx为仓库名,1.0为标签名 -
上传镜像:
docker push dockerhub_ID/nginx:1.0
如果直接docker push nginx,而没有进行镜像名则修改会报错
denied: requested access to the resource is denied.
为什么要将镜像tag改为:dockerhub_ID/自定义镜像的名:自定义镜像的tag?
猜测:用于dockerhub指定上传到的用户仓库。 -
下拉上传镜像
登录:docker login -u docker.hub个人ID
下拉镜像:docker pull dockerhub_ID/nginx:1.0
(承接上面)
八、容器间通信
1.计算机网络相关知识
- windows中route命令的使用:
route print #显示IP路由表的全部内容 route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1 #向带有255.255.0.0子网掩码和10.27.0.1下一跃点地址的10.41.0.0目标中添加一个永久路由 #发送给10.41.0.0的数据包,转发给10.27.0.1 route delete 10.41.0.0 mask 255.255.0.0 #删除掉带有255.255.0.0子网掩码的10.41.0.0目标的路由
- 查看访问路由:
traceroute www.baidu.com
apt-get install traceroute
2.容器通信
- 新建容器:
docker run -d --name zhou01 -P ubuntu:16.04
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口;
-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。 - 进入容器:
docker exec -it zhou01 /bin/bash
- 查看ip地址:
ip addr
(或docker exec -it ubuntu01 ip addr
)
eth0@if9表示docker容器分配的ip地址
补充:apt install iputils-ping安装ping库(报错的话,更新一下apt-get:apt-get update
)
查看网卡配置:ipconfig
(windows)ifconfig
(linux,若报错,ubuntu下使用该命令:sudo apt-get install net-tools
)