docker学习一(基本操作)

注:本文章是基于《第一本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中的指令:

  1. CMD:用于指定一个容器启动时要运行的命令。
  2. ENTRYPOINT:与CMD命令类似,但可防止CMD中命令被覆盖的问题。
  3. WORKDIR: 用来从镜像创建一个新容器时,在容器内部设置一个工作目录,如:
    WORKDIR /opt/webapp/db
    RUN bundle install
    表示将当前工作目录设置到/opt/webapp/db,然后执行bundle install命令。
  4. ENV:用来在镜像构建中设置环境变量。如:
    ENV RVM_PATH /home/rvm
    也可以用docker run -e来传递环境变量。
  5. USER:指定镜像会议什么样的用户进行运行
    USER user
    USER user::group
    USER uid
    USER uid:gid
    USER user:gid
    USER uid:group
  6. VOLUME: 用来向镜像容易添加卷。可以用来共享数据等,如:
    VOLUME [“/opt/project”,”/data”]
    /opt/project 容器中的挂载点
    /data 指定目录
  7. ADD:用来将构建环境下的文件和目录复制到镜像中。如:
    ADD software.lic /opt/application/software.lic
    表示将目录下的software.lic复制到容器中/opt/application/software.lic。
    文件来源也可以是URL的格式。如:
    ADD http://XXXX/latest.zip /root/wedpress.zip
  8. COPY:类似ADD,主要用于构建上下文中复制本地文件,如:
    COPY conf.d /etc/apache2/
  9. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值