centso安装docker
sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-edge
sudo yum makecache fast
sudo yum install docker-ce
安装ubuntu
docker pull ubuntu:16.04
遇到问题
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法:
sudo groupadd docker
sudo usermod -aG docker $(whoami)
sudo service docker start
运行docker
docker run -it --rm ubuntu:16.04 bash
查看镜像信息
cat /etc/os-release
列出已下载镜像
docker image ls
查看镜像、容器、数据卷所占用空间
docker system df
查看虚悬镜像
docker image ls -f dangling=true
删除虚悬镜像
docker image prune
显示中间层镜像
docker image ls -a
列出指定镜像
docker image ls ubuntu
查看ubuntu:16.04后建立的镜像
docker image ls -f since=ubuntu:16.04
列出镜像id
docker image ls -q
列出镜像id和仓库名
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
删除镜像
docker image rm id前几位即可
如果提示无法删除可以
docker image rm -f id前几位即可
另外一种删除方法
docker image rm 仓库名@digest
查看正在运行docker
docker ps -a
查看镜像摘要
docker iamge ls --digests
一个镜像可能对应多个标签,当删除时可能会出现untagged或者存在镜像对镜像的依赖,也是不会删除的
删除所有仓库名为redis的镜像
docker image rm $(docker image ls -q redis)
docker image rm $(docker image ls -q -f before=ubuntu:16.04)
docker run --name webserver -d -p 80:80 nginx
docker exec -it webserver bash
echo '<h1>this is Martin duan docker webserver!</h1>' > /usr/share/nginx/html/index.html
定制镜像(docker commit 会使镜像臃肿,每次修改并不会删除上层的东西,只是在当前层进行标记、添加、修改)
docker commit --author "Martin" --message "修改网页" webserver nginx:v2
重新部署
docker run --name web2 -d -p 81:80 nginx:v2
Dockerfile定制镜像
sudo vim Dockerfile
添加下面内容:(FROM scratch 意味着不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在)
当有多个命令的时候使用&&连接,因为镜像有最大层数限制这样镜像只会有一层
FROM nginx
RUN echo '<h1>this is Martin duan docker webserver!</h1>' > /usr/share/nginx/html/index.html
在Dockerfile目录下执行
docker build -t nginx:v3 . #(注意这个点)
镜像上下文
直接用Git repo进行构建
docker build url
用给定的tar压缩包构建
docker build http://server/context.tar.gz
从标准输入中构建
docker build - < Dockerfile
或者
cat Dockerfile | docker build -
从标准输入中读取上下文压缩包进行构建
docker build - < context.tar.gz
Dockerfile 命令
COPY
COPY <源路径> <目标路径>
ADD
和COPY的格式和性质基本一致,但是增加了一些功能,源路径可以是url(并不常用)
CMD容器启动命令:
shell格式
exec格式
一般推荐使用exec,这类格式在解析时会被解析为json数组,因此要使用" ,不要用单引号。exec从stdin中exit后不会导致容器中断
service nginx start
在容器中应该以前台形式进行
CMD ["nginx", "-g", "daemon off;"]
查看健康状态,端口映射情况
docker container ls
参数详解:
docker run -t -i ubuntu:16.04 bash
-t 让docker分配一个伪终端并绑定到容器的标准输入上,-i让容器的标准输入保持打开
当docker run 来创建容器时,Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启用一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中去
从地址配置一个ip地址给容器
执行用户指定的用户程序
执行完毕后容器别终止
docker container start 可以将一个已经终止的容器启动进行
后台运行
docker run ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
会输入出到宿主机下
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
不会输出
容器是否会长久运行时和docker run 指定的命令有关和-d参数无关
docker container logs [container ID or Names] 可以获取容器的输出信息
docker container stop 终止运行中的容器
docker container restart 重启运行态的容器
导出容器
docker export 命令
docker export container_id > ubuntu.tar
docker container ls -a
导入镜像
cat ubuntu.tar | docker import - test/ubuntu:v1.0
docker image ls
还可以通过url或者某个目录导入
docker import http:/example.com/example.tgz example/imagerepo
删除容器
docker container rm trusting_newton
删除运行中容器可以添加-f
清理所有终止状态的容器
docker container prune
docker run -d -p 5000:5000 ...
sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-edge
sudo yum makecache fast
sudo yum install docker-ce
安装ubuntu
docker pull ubuntu:16.04
遇到问题
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解决办法:
sudo groupadd docker
sudo usermod -aG docker $(whoami)
sudo service docker start
运行docker
docker run -it --rm ubuntu:16.04 bash
查看镜像信息
cat /etc/os-release
列出已下载镜像
docker image ls
查看镜像、容器、数据卷所占用空间
docker system df
查看虚悬镜像
docker image ls -f dangling=true
删除虚悬镜像
docker image prune
显示中间层镜像
docker image ls -a
列出指定镜像
docker image ls ubuntu
查看ubuntu:16.04后建立的镜像
docker image ls -f since=ubuntu:16.04
列出镜像id
docker image ls -q
列出镜像id和仓库名
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
删除镜像
docker image rm id前几位即可
如果提示无法删除可以
docker image rm -f id前几位即可
另外一种删除方法
docker image rm 仓库名@digest
查看正在运行docker
docker ps -a
查看镜像摘要
docker iamge ls --digests
一个镜像可能对应多个标签,当删除时可能会出现untagged或者存在镜像对镜像的依赖,也是不会删除的
删除所有仓库名为redis的镜像
docker image rm $(docker image ls -q redis)
docker image rm $(docker image ls -q -f before=ubuntu:16.04)
docker run --name webserver -d -p 80:80 nginx
docker exec -it webserver bash
echo '<h1>this is Martin duan docker webserver!</h1>' > /usr/share/nginx/html/index.html
定制镜像(docker commit 会使镜像臃肿,每次修改并不会删除上层的东西,只是在当前层进行标记、添加、修改)
docker commit --author "Martin" --message "修改网页" webserver nginx:v2
重新部署
docker run --name web2 -d -p 81:80 nginx:v2
Dockerfile定制镜像
sudo vim Dockerfile
添加下面内容:(FROM scratch 意味着不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在)
当有多个命令的时候使用&&连接,因为镜像有最大层数限制这样镜像只会有一层
FROM nginx
RUN echo '<h1>this is Martin duan docker webserver!</h1>' > /usr/share/nginx/html/index.html
在Dockerfile目录下执行
docker build -t nginx:v3 . #(注意这个点)
镜像上下文
直接用Git repo进行构建
docker build url
用给定的tar压缩包构建
docker build http://server/context.tar.gz
从标准输入中构建
docker build - < Dockerfile
或者
cat Dockerfile | docker build -
从标准输入中读取上下文压缩包进行构建
docker build - < context.tar.gz
Dockerfile 命令
COPY
COPY <源路径> <目标路径>
ADD
和COPY的格式和性质基本一致,但是增加了一些功能,源路径可以是url(并不常用)
CMD容器启动命令:
shell格式
exec格式
一般推荐使用exec,这类格式在解析时会被解析为json数组,因此要使用" ,不要用单引号。exec从stdin中exit后不会导致容器中断
service nginx start
在容器中应该以前台形式进行
CMD ["nginx", "-g", "daemon off;"]
查看健康状态,端口映射情况
docker container ls
参数详解:
docker run -t -i ubuntu:16.04 bash
-t 让docker分配一个伪终端并绑定到容器的标准输入上,-i让容器的标准输入保持打开
当docker run 来创建容器时,Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启用一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口道容器中去
从地址配置一个ip地址给容器
执行用户指定的用户程序
执行完毕后容器别终止
docker container start 可以将一个已经终止的容器启动进行
后台运行
docker run ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
会输入出到宿主机下
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
不会输出
容器是否会长久运行时和docker run 指定的命令有关和-d参数无关
docker container logs [container ID or Names] 可以获取容器的输出信息
docker container stop 终止运行中的容器
docker container restart 重启运行态的容器
导出容器
docker export 命令
docker export container_id > ubuntu.tar
docker container ls -a
导入镜像
cat ubuntu.tar | docker import - test/ubuntu:v1.0
docker image ls
还可以通过url或者某个目录导入
docker import http:/example.com/example.tgz example/imagerepo
删除容器
docker container rm trusting_newton
删除运行中容器可以添加-f
清理所有终止状态的容器
docker container prune
docker run -d -p 5000:5000 ...