安装Docker
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245yumC8950F966E92D8576A8BA88D21E9
- sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
- sudo apt-get update
- sudo apt-get install -y lxc-docker
镜像相关
1、下载镜像
sudo docker pull ubuntu
默认从Docker HUb 上下载
复制代码
2、查看当前已有的镜像
sudo docker images
3、查看镜像文件的详细信息
sudo docker inspect id
4、搜寻镜像
docker search
5、删除镜像
docker rmi <标签、ID>
只是删除其一个标签,只剩下最后一个标签的时候就会删除镜像文件。
6、创建镜像
sudo docker commit -m "message" -a "author" ID 名称
7、基于本地模板导入
sudo cat xxx.tar.gz | docker import - ubuntu
8、存出镜像
sudo docker save -o xxx.tar <镜像名称
9、载入镜像
sudo docker load --input <镜像tar包>
10、上传镜像
sudo docker push xxx/xxx:lastest
容器相关
1、新建容器
sudo docker create -ti ubuntu
2、创建并启动
sudo docker -t -i ubuntu /bin/bash
3、守护态运行容器
sudo docker run -d ubuntu /bin/bash -c ""
4、打印容器的输出信息
sudo docker logs id
5、终止一个容器
sudo docker stop id
6、查看终止状态的容器ID
sudo docker ps -a -q
7、启动容器
sudo docker start id
8、重启容器
sudo docker restart id
9、进入容器
sudo docker attach NAME #多个窗口attach 一个容器,所有窗口会同步显示
10、进入容器 2
sudo docker exec -ti id /bin/bash
11、删除容器
sudo docker rm xxx
12、导出容器
sudo docker export ce5 > text_for_run.tar
13、导入容器
cat test_for_run.tar | sudo docker import - test/ubuntu:v1.0
仓库相关
1、在仓库 中查找镜像文件
sudo docker search centos
2、下拉镜像文件
sudo docker pull centos
3、自动下载并启动一个registry容器
sudo docker run -d -p 5000:5000 registry
数据卷
类似于挂载效果
sudo docker run -d -P --name web -v /webapp training/webapp python app.py
使用一个training/webapp镜像创建一个web容器,并创建一个数据卷挂载到容器/webapp上
挂载一个主机目录作为数据卷
sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
-P 允许外部访问容器需要暴露端口
-v 挂载数据卷选项
/src/webapp 主机路径
: 表明挂载
/opt/webapp 容器路径
training/webapp 镜像文件
python app.py 容器运行命令,这是运行flask 网站
还可以挂载文件
数据卷容器
创建容器
sudo docker run -it -v /dbdata --name=dbdata ubuntu
其他容器挂载数据卷容器
sudo docker run -itd --volumes-from dbdata --name=db1 ubuntu
--volumes-from dbdata 挂载dbdata数据卷容器
docker run -itd --net=host --name=ubuntu -v /src:/opt/webapp ubuntu
数据卷迁移数据
sudo docker run --volumes-from dbdata -v $(pwd):/backup --name=work ubuntu
网络基础配置
启动创建容器的时候,如果不指定对应的参数,在容器外是无法通过网络来访问容器内的网络应用和服务的。
复制代码
1、动态分配端口
`sudo docker run -d -P xxxxx `
复制代码
2、查看容器是否使用端口
`sudo docker ps -l`
复制代码
3、映射所有接口地址
`docker run -d -p 5000:5000 xxx xxxx`
主机端口:容器端口
映射多个端口出来
`docker run -d -p 5000:5000 -p 3000:80 xxx`
多次使用-p就行
复制代码
4、映射指定的地址到指定的端口
`docker run -d -p 127.0.0.1:5000:5000 xx`
将127.0.0.1地址的5000端口给容器使用
复制代码
5、映射到指定地址的任意端口
`docker run -d -p 127.0.0.1::5000`
复制代码
6、查看映射端口配置
`sudo docker port xxxx 5000`
复制代码
Dockfile的使用
快速创建自定义的镜像。
四部分:基础镜像信息,维护者信息,镜像操作指令, 容器启动执行指令。
注释:#
基础镜像信息:
FROM xxx
复制代码
维护者信息:
MAINTAINER author email
复制代码
镜像操作指令:
RUN xxxxx #shell 命令 进行相关的安装指令
复制代码
指令
FROM
指定镜像
复制代码
MAINTAINER
指定维护者信息
复制代码
RUN
使用shell命令,完成初始化安装
复制代码
CMD
容器启动时执行。如果用户指定了运行命令,则覆盖掉CMD指定命令
复制代码
EXPOSE
容器暴露的端口号
复制代码
ENV
设置docker中镜像的环境变量
复制代码
ADD
即copy命令,ADD 主机源文件 docker目的路径
复制代码
COPY
与ADD 相似,推荐使用
复制代码
ENTRYPOINT
VOLUME
创建本机的挂载点
复制代码
USER
指定容器运行的用户。
复制代码
WORKDIR
配置工作目录
复制代码
ONBUILD
\#todo
复制代码
创建镜像
`docker build -t 生成的镜像标签 指定dockerfile所在的路径`
复制代码
遇到的问题
get D-Bus connection: Operation not permitted
解决办法:
docker run --privileged -itd --net=host -v /virus:/virus --name=centos docker.io/centos /usr/sbin/init