docker使用
docker
1、WSL中使用docker
sudo service docker start
镜像
1、列出镜像列表
docker images
docker image ls
docker image list
选项说明:
REPOSITORY: 镜像的仓库源
TAG:镜像的标签
IMAGE ID: 镜像ID
一个仓库源可以有多个TAG,代表不同版本,所以使用REPOSITORY:TAG来定义不同的镜像
2、运行镜像
docker run -it ubuntu:15.10 bash
参数说明:
-v : 使用Volumes挂载数据.
-i : 交互式
-t : 终端
-d : 后台模式
-P : 将容器内部使用的网络端口随机映射到我们使用的主机上
-p : 通过-p参数来设置不一样的端口,例如: docker run -d -p 8888:8888 镜像名
--gpus all 需要加这个,才能支持GPU
bash 希望有个交互式Shell, 因此用的是bash
举例:
docker run --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
3、查找镜像
可以通过以下网站来搜索镜像:
https://hub.docker.com
4、拖取镜像
docker pull 镜像地址
上图是官方的tensorflow,Tags下有各种版本,可以直接pull,默认是py2, 除非tag里指定py3.
5、删除镜像
docker rmi 镜像名
6、创建镜像
这里是重点, 包括创建、更新镜像.
有两种方法:
- 从已创建的容器中更新镜像, 并且提交这个镜像.
docker run -it 镜像名 /bin/bash
然后在shell中安装其他的环境, 安装完成后:
docker commit -m="描述信息" -a="镜像作者" 容器id 目标镜像名
- 从头创建镜像
需要创建一个Dockerfile文件, 用来告诉Docker如何构建镜像
""" Dockerfile文件中的示例内容.
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
"""
每个指令的前缀都必须是大写的
FROM, 指定使用哪个镜像源
RUN, 告诉docker在镜像中执行命令,安装了什么
接着build Dockerfile
docker build -t 镜像名 Dockerfile文件所在目录
docker build -t runoob/centos:6.7 . 其中.是dockerfile的目录所在
容器
1、查看容器
docker ps -a 查看所有容器(包括停止的, 运行的)
docker ps 查看所有运行中的容器
2、运行容器
docker start 容器id
3、停止容器
docker stop 容器id
4、重启容器
docker restart 容器id
5、删除容器
docker rm -f 容器id : 删除指定id的容器
docker container prune : 清理掉所有处于终止状态的容器
6、容器交互
- 查看容器内部运行的进程
docker top 容器id
- 查看容器内部标准输出:
docker logs -f 容器id
- 退出容器交互
exit
7、导入导出容器快照
导出容器快照
docker export 容器id > 本地文件
docker export 1e560fca3906 > ubuntu.tar
导入容器快照
docker import url or 目录 镜像名
8、进入后台运行的容器
docker exec -it 容器id /bin/bash
9、容器端口
- 查看容器端口映射情况
docker port 容器id : 可以查看某个容器的情况
docker ps : 通过PORTS查看端口变化
- 端口连接
-P : 容器内部端口随机绑定到主机端口
-p : 容器内部端口绑定到指定的主机端口
举例:
docker run -d -p 5000:5000 training/webapp python app.py
将容器的5000端口绑定到主机的5000端口上
- 指定容器绑定的网络地址
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
这样就可以通过127.0.0.1:5001来访问容器的5000端口
- 绑定udp接口
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py