docker安装
安装请参考docker官网:https://docs.docker.com/engine/installation/linux/ubuntulinux/
容器相关命令
docker启动、重启、关闭
sudo docker start | restart | stop
查看docker程序是否正常工作
sudo docker info
创建一个交互式shell容器,并为容器命名,名字可以包含字符:a-z,A-Z,0-9,下划线,圆点,横线。用正则表示[a-zA-Z0-9_.-]
sudo docker run --name first_container -it ubuntu /bin/bash
查看当前系统中的容器列表
docker ps -a docker ps -a -l #列出最后一次运行的容器
重新启动已经停止的容器
sudo docker start first_container sudo docker start container_id #也可以用从其id启动sudo docker start container_name #重新启动一个容器
创建守护式容器,使用-d参数,docker容器会在后台运行
sudo docker run --name container_name -d ubuntu /bin/bash
停止守护进程
sudo docker stop container_name
获取守护式容器日志
sudo docker logs container_name sudo docker logs -f container_name #监控docker日志sudo docker logs --tail 10 container_name #获取日志最后10行sudo docker logs --tail 0 -f container_name #跟踪某个容器的最新日志而不必读取日志文件sudo docker logs -ft container_name #-t标志为每条日志加上时间戳,方便调试
查看容器内的进程
sudo docker top container_name
自动重启容器
sudo cocker run --restart=always --name container_name -d ubutu
--restart:always,on-failure
--restat=on-failure:5,自动尝试重启五次
查看容器
sudo docker inspect container_name
docker inspect命令会对容器进行详细的检查,然后返回其配置信息,包括名称、命令、网络配置的数据,也可以用-f或者--format标志来选定查看结果。
sudo docker inspect --format='{{.State.Running}}' container_name#查看多个容器sudo docker inspect --format='{{.Name}} {{.State.Running}}' container_name_1 container_name_2
/var/lib/docker目录存放着docker镜像、容器以及容器的配置,所有的容器都保存在/var/lib/docker/containers目录下
删除容器
sudo docker rm container_name | container_id
运行的docker容器是无法删除的,必须先通过docker stop或者docker kill命令停止容器,才能删除。
删除全部容器(-a标志代表列出所有容器,-q表示只需要返回容器的ID。)
sudo docker rm `docker ps -a -q`
镜像相关命令
列出docker镜像
sudo docker images
本地镜像都保存在dockers宿主机的/var/lib/docker目录下。镜像从仓库下载,镜像保存在仓库中,而仓库存在于Registry中,默认的Registry是由Docker公司运营的公共Registry服务,及Docker Hub
拉取ubuntu镜像
docker pull ubuntu #拉取镜像docker pull ubuntu:14.04 #拉去tag为14.04的镜像
指定仓库的标签是一个好习惯,这样可以准确的制定容器来源于哪里。
Docker Hub有两种仓库:用户仓库和顶层仓库,用户仓库的镜像由Docker用户创建,顶层仓库由Docker内部人来管理。
查看镜像
sudo docker images container_name
查找镜像
sudo docker search container_name
构建镜像
sudo docker login
#创建一个要进行修改的定制容器sudo docker run -i -t ubuntu /bin/bash#安装apache软件包apt-get -yqq update apt-get -y install apache2#退出当前容器#提交定制容器sudo docker commit 4aab3ce3cb86 jamtur01/appache2#检查新创建的镜像sudo docker images jamtur01/apache2#在提交镜像时指定更多的数据(包括标签)来详细描述所做的修改sudo docker commit -m="A new custom image" --author="James Turnbull" 4aab3ce3cb76 jamtur01/apache2:webserver#使用docker inspect查看新创建的镜像详细信息sudo docker inspect jamtur01/apache2:webserver#从提交的镜像运行一个新容器sudo docker run -t -i jamtur01/apache2:webserver /bin/bash
用docker的commit命令创建镜像
基于ubuntu镜像创建一个新镜像
创建Docker Hub账号
登陆Docker Hub
用dockerfile构建镜像
并不推荐使用docker commit的方法来构建镜像,相反推荐使用Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基于DLS语法的指令来构建一个Docker镜像,之后使用docker build命令基于该dockerfile中的指令构建一个新的镜像。步骤:(我们将创建一个包含简单web服务器的docker镜像)
mkdir static_webcd static_web touch Dockerfile
#第一个Dockerfile#Version:0.0.1FROM ubuntu:14.04MAINTAINER James Turnbull "james@example.com" RUN apt-get update RUN apt-get install -y nginx RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html expose 80
#运行Dockerfilecd static_web sudo docker build -t="jamtur01/static_web" .
使用docker build命令来构建新镜像,通过-t为新镜像设置了仓库和名称。在本例仓库为jamtur01,镜像名为static_web。建议为自己的镜像设置合适的名字以方便追踪和管理。也可以设置标签,如:
sudo docker build -t="jamtur01/static_web:v1" .
上面告诉docker到本地目录中去找Dockerfile文件,也可以指定一个Git仓库的源地址来指定Dockerfile的位置。
sudo docker build -t="jamtur01/static_web:v1 git@github.com:jamtur01/docker-static_web
Docker从基础镜像运行一个容器。
执行一条指令,对容器做出修改。
执行类似docker commit的操作,提交一个新的镜像层。
Docker在基于刚提交的镜像运行一个新容器。
执行Dockerfile中的下一条指令,直到所有指令都执行完毕。
dockerfile指令解释
Docker大体按照如下流程执行Dockerfile中的指令基于dockerfile镜像构建新镜像
执行docker build命令时,dockerfile中的指令都会被执行并且被提交,并且在该命令成功结束后返回一个新镜像。
dockerfile文件内容
创建一个目录并在里面创建初始化的Dockerfile
忽略dockerfile的构建缓存
sudo docker build --no-cache -t="jamtur01/static_web"
查看新镜像
sudo docker images jamtur01/static_web
查看镜像如何构建出来的
sudo docker history22d47c8cb3jkk
从新镜像启动一个容器
sudo docker run -d -p 80 --name static_web jamtur01/static_web nginx -g "daemon off;"
-d:说明在后台运行
-p:控制docker在运行时应该公开哪些网络端口给宿主机,-p还可以灵活的管理容器和宿主机之间的端口映射关系
sudo docker run -d -p 80:80 --name static_web jamtur01/static_web nginx -g "daemon off;"sudo docker run -d -p 8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"#端口限制在特定的IP上sudo docker run -d -p 127.0.0.1:8080:80 --name static_web jamtur01/static_web nginx -g "daemon off;"
-P:可以用来对外公开在Dockerfile中EXPOSE指令中设置的所有端口
sudo docker run -d -P --name static_web jamtur01/static_web nginx -g "daemon off;"
运行一个容器时,Docker可以通过两种方法来在宿主机上分配端口。
* Docker可以在宿主机上随机选择一个位于49153~65535的一个比较大的端口好来映射到容器中的80端口上。
* 可以在Docker宿主机中指定一个具体的端口好来映射到容器中的80端口上。
查看docker端口映射情况
sudo docker ps -l##指定要查看映射情况的容器ID和容器的端口号sudo docker port container_id 80
作者:YONGSSU的技术站点
链接:https://www.jianshu.com/p/ae07706c419e
共同学习,写下你的评论
评论加载中...
作者其他优质文章