注:本文章是基于《第一本docker书》学习的笔记,建议购买阅读原书。
cnetos中安装docker:(安装服务)
sudo yum -y install docker-io
开启开机自启动:
sudo service docker start
sudo service docker enable
或者
sudo systemctl start docker
sudo systemctl enable docker
查看docker安装完毕后信息
sudo docker info
sudo docker inspect [container_name]可获取容器更多信息,inspect:检查,视察
使用-f或者—formet来选择查看容器相关信息:
sudo docker inspect --format=’{{.State.Running}}’ daemon_dave
docker inspect --format={{.NetworkSettings.IPAddress}}’ daenon_dave
还可以查看多个容器的信息:
docker inspect --format=’{{.Name}}{{.NetworkSetting.IPAddress}}’ daemon_dave bob_the_container
二进制安装docker:
wget http://get.docker.io/builds/Linux/x86_64/docker-lastest.tgz
docker守护进程:
sudo /usr/bin/docker -d -H tcp://0.0.0.0:2375
-H tcp://0.0.0.0:2375表示将守护进程监听端口改为2375
运行容器:run
docker run -i -t ubuntu /bin/bash
-i 表示容器中的STDIN(标准输入)是开启的
-t 表示给容器分配一个tty终端,(用于显示输入输出)
/bin/bash 表示容器启动后运行的程序
ps -aux查看进程
apt-get update && apt-get install vim 在ubuntu中安装vim
hostname 查看容器ID
exit 退出当前容器
docker ps -a 在主机中查看当前系统中容器列表
docker ps -l 查看最后一次运行的容器
docker ps -n X 查看最后X个容器
容器命名:
docker run -–name bob_the_container -i -t ubuntu /bin./bash
重启容器:
docker start bob_the_container
附着到容器上:主要是容器重启时将终端附着到容器上
docker attach bob_the_container
创建守护式容器:
docker run --name daemon_dave -d ubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done”
-d 创建后台运行的容器,d是deamon,守护进程
获取容器日志:
docker logs daemon_dave:输出容器全部日志
docker logs -f daemon_dave:输出容器最后几条日志并返回,类似于linux系统命令“tail -f”,用于日志监控跟踪
docker logs -ft daemon_dave:加t,表示为输出日志增加时间戳
查看容器内进程:
docker top daemon_dave
在容器内部运行进程:
在容器内部运行后台任务:
docker exec -d daemon_dave touch /etc/new_config_file
在容器内部运行交互式任务:
docker exec -t -i daemon_dave /bin/bash
停止守护进程:
docker stop daemon_dave
自动重启容器:
docker run –restart=always –name daemon_dave -d ubuntu /bin/sh -c “while true; do echo hello world; sleep 1;done”
–restart 表示重启模式,
–restart=always表示总是重启,
–restart=on-failure表示当容器退出代码不为0时,容器自动重启
–restart=on-failure:5表示可重启5次
删除容器:
docker rm XXXX(容器Id):删除容器
查看docker镜像:
docker images
拉取镜像:
docker pull ubuntu:12.04
查找镜像:
docker search ubuntu
创建镜像:
docker commit XXXX[container_ID] XXXX[image_name]
docker commit -m=”创建的容器的提交信息” --author=”作者信息” container_id image_name
通过Dockerfile创建镜像:
mkdir static_web
cd static_web
touch Dockerfile
Dockerfile中的内容:
# Version: 0.0.01 (指定版本)
FROM ubuntu:14.04 (指定基础镜像)
MAINTAINER James Turnbull james@example.com (作者信息)
RUN apt-get update (执行的命令,更新apt-get)
RUN apt-get install -y nginx (执行的命令,安装nginx)
RUN echo ‘Hi, I an in your container’
>/usr/share/nginx/html/index.html (执行的命令,创建html文件)
EXPOSE 80 (制定向外公开的端口,启动容器时需要指定)
RUN命定默认是在、/bin/sh -c中执行,对于不支持shell的平台,可使用exec格式如:
RUN [“apt-get”,”install”,”-y”,”nginx”]
使用docker build命令创建image
docker build -t=”liyanghengda/static_web” .
注意:在这个命令后边有个“.”,表示当前目录,不写会报错。
查看镜像构建过程历史:
docker history image_id
从新镜像启动容器
sudo docker run -d -p 80 --name static_web liyanghengda/static_web nginx -g “daemon off;”
nginx -g “daemon off;”以前台的形势启动nginx
-p 80 Docker随机从49153~65535中选择一个端口映射到容器的80端口,docker ps命令查看可以看到对应的端口,后者使用docker port container_id container_port,也可以查看对应端口;
-p 8080:80 将容器的80端口绑定到宿主机8080端口;
-p 192.168.43.99:8080:80 将容器的80端口绑定到宿主机192.168.43.99:8080端口;
-p 192.168.43.99::80 只指定了IP,没有指定端口
-P 将Dockerfile中EXPOSE中的端口公开
Dockerfile中的指令:
- CMD:用于指定一个容器启动时要运行的命令。
- ENTRYPOINT:与CMD命令类似,但可防止CMD中命令被覆盖的问题。
- WORKDIR: 用来从镜像创建一个新容器时,在容器内部设置一个工作目录,如:
WORKDIR /opt/webapp/db
RUN bundle install
表示将当前工作目录设置到/opt/webapp/db,然后执行bundle install命令。 - ENV:用来在镜像构建中设置环境变量。如:
ENV RVM_PATH /home/rvm
也可以用docker run -e来传递环境变量。 - USER:指定镜像会议什么样的用户进行运行
USER user
USER user::group
USER uid
USER uid:gid
USER user:gid
USER uid:group - VOLUME: 用来向镜像容易添加卷。可以用来共享数据等,如:
VOLUME [“/opt/project”,”/data”]
/opt/project 容器中的挂载点
/data 指定目录 - ADD:用来将构建环境下的文件和目录复制到镜像中。如:
ADD software.lic /opt/application/software.lic
表示将目录下的software.lic复制到容器中/opt/application/software.lic。
文件来源也可以是URL的格式。如:
ADD http://XXXX/latest.zip /root/wedpress.zip - COPY:类似ADD,主要用于构建上下文中复制本地文件,如:
COPY conf.d /etc/apache2/ - ONBUILD:为镜像添加触发器。当一个镜像被用作其他镜像的基础镜像时,该镜像中的触发器会被执行。
将镜像推送到Docker Hu上:
docker push liyanghengda/static_web
删除镜像:
docker rmi liyanghengda/static_web
运行自己的Registry:
docker run -d -p 5000:5000 registry
为镜像打标签:
docker tag ce8cfaff9882 localhost:5000/liyanghengda/static_web
推送镜像:
docker push localhost:5000/liyanghengda/static_web