安装
快速安装
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
curl -sSL https://get.docker.com/ | sh
启动:service/systemctl docker start
YUM安装
# 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
# 安装依赖和源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装CE
yum install docker-ce
镜像
修改镜像源地址: vi /etc/docker/daemon.json
"registry-mirrors": ["http://hub-mirror.c.163.com"]
基础命令
镜像
-
拉取镜像
docker pull hub.c.163.com/public/centos:7.2.1511
-
列出本机的所有 image 文件
docker image ls
docker images
-
删除 image 文件
docker image rm [IMAGEID/NAME]
docker rmi [IMAGEID/NAME]
-
拉取镜像
docker image pull [NAME:VERSION]
-
分析镜像
docker inspect [IMAGEID/NAME]
容器
-
查看进程
docker ps [-a]
docker container ls [-a]
-
容器监控
docker stats
-
容器信息
docker inspect [CONTAINER/IMAGE]
-
运行
docker [container] run [IMAGE]
- –name 指定容器名称
- -p 容器的3000端口映射到本机的8000端口
- -it 容器的Shell映射到当前的Shell,然后你在本机窗口输入的命令,就会传入容器
- –rm 在容器终止运行后自动删除容器文件
- -d 后台运行
- -v 挂载镜像
/opt/local:/opt/docker
- –link 链接其他容器
mysql:mysqld
- -h 指定hostname
- –add-host 添加host,name:ip
docker container run -p 8000:3000 -it mydocker:0.0.1 /bin/bash
Ctrl + P + Q
退出继续运行,exit
会关闭容器 -
执行命令
docker exec -it [CONTAINER] bash
进入bash
- –user 指定登录用户名
-
停止
docker container kill [CONTAINER]
-
删除容器文件
docker container rm [-f] [CONTAINER]
或docker rm [-v] [CONTAINER]
-
启动/关闭/重启/进程
docker container start/stop/restart/top [CONTAINER]
-
日志
docker logs -f --tail 10 [CONTAINER]
持续查看最近10行 -
重命名
docker rename old_name new_name
-
复制文件
docker cp [pwd/file] [CONTAINER]:/home/app
-
更新为自启动
docker update --restart=always [CONTAINER]
-
查看所有容器IP
docker inspect --format='{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
制作Docker容器
新建Dockerfile文件
FROM hub.c.163.com/public/centos:7.2.1511
RUN mkdir -p /data/{log,package}
EXPOSE 22
COPY . /opt
COPY dir/ /home/dir
ENTRYPOINT sh
创建image
docker image build -t mydocker:0.0.1 .
-t
参数用来指定 image 文件的名字,后面冒号
用来指定标签,注意最后.
CMD 命令:RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。
指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash)
docker container run -p 8000:3000 -it mydocker:0.0.1
网络
bridge Nat模式
host 桥接模式
overlay 网络模式
-
创建自定义网络
docker network create [--driver bridge] --subnet=172.16.0.0/24 docker-br0
-
自定义的网段选取任意IP地址
docker run -d --name [CONTAINER_NAME] --net docker-br0 --ip 172.16.0.10 [IMAGE]
-
查看网络
docker network ls
-
为容器添加网络
docker network connect [--ip ip] [NETWORK_NAME] [CONTAINER_NAME]
磁盘
-
查看磁盘占用量
docker system df
-
清理
docker system prune
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
发布镜像
网易云:
docker login -u [account] -p [password] hub.c.163.com
docker tag [IMAGE_NAME:VERSION] hub.c.163.com/jacksonrick/mydocker:0.0.1
docker push hub.c.163.com/jacksonrick/mydocker:0.0.1
阿里云:
docker login -u [account] -p [password] registry.cn-hangzhou.aliyuncs.com
docker tag jackson/fdfs:1.8 registry.cn-hangzhou.aliyuncs.com/jackson/fdfs:2.0
docker push registry.cn-hangzhou.aliyuncs.com/jackson/fdfs:2.0
导出导入
-
将容器修改提交到镜像
docker commit [CONTAINER] name:tag
-
将镜像导出到文件
docker export [CONTAINER] > image.tar
-
创建一个新静像从基于导出的文件
docker import - [IMAGE_NAME:VERSION] < image.tar
docker run & start
- run
将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start) - start
重新启动已存在的镜像
修改容器的挂载目录
- 停止docker服务
systemctl stop docker.service - vi /var/lib/docker/containers/container-ID/config.v2.json
- 启动docker服务
systemctl start docker.service
常用镜像
docker pull hub.c.163.com/public/debian:8.6
docker pull hub.c.163.com/public/centos:7.2.1511
docker pull hub.c.163.com/library/java:8u111-jre
docker pull hub.c.163.com/library/java:8u111-jdk
docker pull hub.c.163.com/library/postgres:10
docker pull hub.c.163.com/library/mysql
docker pull hub.c.163.com/public/nginx:1.2.1
docker pull hub.c.163.com/library/redis
docker pull hub.c.163.com/library/rabbitmq
docker pull registry.cn-hangzhou.aliyuncs.com/jackson/fdfs:2.0