一、安装
1、linux 安装(老师的方法:)
2、内核升级(CentOS6.X 升级内核 至 3.10)
3、阿里云的docker镜像仓库
- https://c.163yun.com/hub#/m/library/
- https://registry.docker-cn.com
- https://blog.csdn.net/qq_30259339/article/details/52400673
4、卸载
- yum list installed | grep docker
- yum -y remove docker-engine.x86_64
- rm -rf /var/lib/docker
5、操作工具nsenter的安装
6、windows安装
- http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
- https://www.cnblogs.com/linjj/p/5606687.html
- https://blog.csdn.net/vitaair/article/details/80894890
二、操作
1、client 中的操作命令
- docker build --创建
- docker pull --拉取
- docker search nginx --在docker hub上查找nginx
- docker run --name <设置容器名字> --运行镜像
- docker run -dit -p 80:80 nginx --运行nginx镜像
- docker images --查看本地已有的镜像
- docker rmi <image_id> 删除镜像
- docker ps -- 查看正在运行的容器信息
- docker ps -a --查看所有状态的容器信息
- docker stop <CONTAINER ID> --停止容器
- docker start <CONTAINER ID> --重新启动容器
- docker rm <container_name> --删除容器(docker rm)
- docker rm $(docker ps -a -q) --删除所有容器
2、docker 进入容器,及docker 的相关命令
- 使用docker attach命令(只要这个连接终止,或者使用了exit命令,容器就会退出后台运行) : docker attach <name> 或者 docker attach <id>
- 使用docker exec命令(命令使用exit命令后,不会退出后台,一般使用这个命令):docker exec -it <name> /bin/bash 或者 docker exec -it <id> /bin/bash
- ctrl+p ctrl+q 退出
三、在现有的容器上,创建新的镜像
- docker commit -m 'fun' <CONTAINER ID> <new_image_name>
四、Dockerfile的使用
1、创建一个Dockerfile内容:
- mkdir workdir
- cd ./workdir
- touch Dockerfile
FROM alpine:latest
MAINTAINER anquing
CMD echo "hello Docker"
2、创建镜像
- 在Dockerfile文件同级目录执行:
docker build -t hello_docker .
- 查看:
docker images
- 执行测试:
docker run hello_docker
3、语法
命令 | 用途 |
---|---|
FROM | base image |
RUN | 执行命令 |
ADD | 添加文件 |
COPY | 拷贝文件 |
CMD | 执行命令 |
EXPOSE | 暴露端口 |
WORKDIR | 指定路径 |
MAINTAINER | 维护者 |
ENV | 设定环境 |
ENTRYPOINT | 容器入口 |
USER | 指定用户 |
VOLUME | mount point |
五、Volume的使用,提供独立于容器外的持久存储
1、持久化到docker中
docker run -d --name nginx -p 80:80 -v /usr/share/nginx/html nginx
说明:在80端口启动nginx容器,设置容器名为nginx,及将/usr/share/nginx/html下文件永久保存在docker中的某个目录下
- 检验
docker inspect nginx
会看到
"Volumes": {
"/usr/share/nginx/html": "/var/lib/docker/volumes/816ec5662f5254cc6c3cdd3296bbb094587ceb0ea52b59aeb34103e387feef47/_data"
在以下目录对文件进行修改后,容器中对应的文件也会变化
cd /var/lib/docker/volumes/816ec5662f5254cc6c3cdd3296bbb094587ceb0ea52b59aeb34103e387feef47/_data
echo hello >index.html
docker exec -it <CONTAINER ID> /bin/bash
cd /usr/share/nginx/html
cat index.html
2、持久化到本地主机中
docker run -d --name nginx -p 80:80 -v $PWD/html:/usr/share/nginx/html nginx
说明:在80端口启动nginx容器,设置容器名为nginx,及将/usr/share/nginx/html下文件永久保存在本地主机执行命令时的目录下的html子目录下
在$PWD/html目录下操作:
touch index.html
echo '<html><h1>docker<h1></html>' >index.html
curl http://localhost
输出:<html><h1>docker<h1></html>
3、持久化到本容器以外的容器中
docker run -it --volumes-from <CONTAINER ID> ubnutu /bin/bash
说明:-it 及 /bin/bash 作用是直接进入容器的交互中
- 验证(使用ubuntu镜像):为了方便,先创建一个容器,将容器某个目录持久化到本地某个目录下。然后新的容器持久化此容器中,就等于间接地持久化本地目录中,方便操作
docker create -v $PWD/data:/var/mydata --name data_container ubuntu
docker run -it --volumes-from data_container ubnutu /bin/bash
六、registry的使用,registry注册服务器 管理 repository(镜像仓库)
1、术语
英文 | 中文 |
---|---|
host | 宿主机 |
image | 镜像 |
container | 镜像 |
registry | 容器 |
daemon | 守护程序 |
client | 客户端 |
2、客户端命令
- docker search whalesay
- docker pull docker/whalesay
- docker run docker/whalesay cowsay Docker 很好玩! 以下是提交:
- docker tag docker/whalesay anquing/whalesay
- docker images
- docker login 回车,输入账号及密码
- docker push anquing/whalesay
3、国内的一些仓库
- daocloud
- 时速云
- aliyun
七、docker-compose的使用,多容器app
1、独立安装
- Mac/Windows:自带
- Linux:curl https://github.com/docker/compose 2、linux 上安装
- curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
- chmod a+x /usr/local/bin/docker-compose
3、实战
- 将所有的容器的Dockerfile文件都创建在总目录/容器名(自定义)下,如果有其他配置文件,也在这个目录下创建
- 在总目录下创建docker-compose.yml文件
- docker-compose up -d --启动
- docker-comose stop --停止
- 如果修改过容器的配置文件,在up之前先docker-compose build
4、docker-compose.yml常用命令
命令 | 用途 |
---|---|
build | 本地创建镜像 |
command | 覆盖缺省命令 |
depends_on | 连接容器 |
ports | 暴露端口 |
volumes | 卷 |
image | pull镜像 |
up | 启动服务 |
stop | 停止服务 |
rm | 删除服务中的各个容器 |
logs | 观察各个容器的日志 |
ps -a | 列出服务相关容器 |