Docker学习笔记1 -- 刚入手docker时的几个命令

本文作者:@Ryan Miao 本文链接:https://www.cnblogs.com/woshimrf/p/learn-docker-note1.html 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处! 目录 Hello World 后台运行 停止运行 容器 载入镜像 指定端口映射 查看日志 查看应用的进程 登入镜像内部 移除容器 镜像 查看本地镜像 拉取镜像 查找镜像 更新镜像 构建镜像 设置镜像标签 目录 Hello World 后台运行 停止运行 容器 载入镜像 指定端口映射 查看日志 查看应用的进程 登入镜像内部 移除容器 镜像 查看本地镜像 拉取镜像 查找镜像 更新镜像 构建镜像 设置镜像标签 Hello World docker run ubuntu:15.10 /bin/echo "Hello world" docker 是命令二进制文件 run 运行一个容器 ubuntu:15.10 镜像名称,通过是名字加版本号 后面是容器里执行的任务 交互式,进入镜像内部 docker run -i -t ubuntu:15.10 /bin/bash -t:在新容器内指定一个伪终端或终端。 -i:允许你对容器内的标准输入 (STDIN) 进行交互。 后台运行 # docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 6e42dee957d59d818d0d21bbf0ff8b2bc84d1006baa2696e81f33e023d3e2c04 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6e42dee957d5 ubuntu:15.10 "/bin/sh -c 'while t…" 2 seconds ago Up 1 second sad_villani # docker logs 6e42dee957d5 hello world hello world hello world 停止运行 # docker stop 6e42dee957d5 6e42dee957d5 容器 载入镜像 docker pull training/webapp 运行应用 # docker run -d -P training/webapp python app.py # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c99a63cd5cb3 training/webapp "python app.py" 4 seconds ago Up 3 seconds 0.0.0.0:32769->5000/tcp jovial_elion # curl localhost:32769 Hello world! -d:让容器在后台运行。 -P:将容器内部使用的网络端口映射到我们使用的主机上。本地端口是32769,映射内部端口5000. 指定端口映射 [root@bigdata-base-001 ~]# docker run -d -p 5000:5000 training/webapp python app.py 458bb7a6520a46e74137032770f846a5faf9afb43b6ba324667d4b1936566ea0 [root@bigdata-base-001 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 458bb7a6520a training/webapp "python app.py" 4 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp wizardly_babbage c99a63cd5cb3 training/webapp "python app.py" About a minute ago Up About a minute 0.0.0.0:32769->5000/tcp jovial_elion [root@bigdata-base-001 ~]# curl localhost:5000 Hello world! 可以发现运行两个应用,但对应本地不同的端口 查看日志 # docker logs 458bb7a6520a * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 172.17.0.1 - - [03/Jan/2019 14:13:38] "GET / HTTP/1.1" 200 - tail日志 # docker logs -f 458bb7a6520a * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 172.17.0.1 - - [03/Jan/2019 14:13:38] "GET / HTTP/1.1" 200 - 查看应用的进程 # docker top 458bb7a6520a UID PID PPID C STIME TTY TIME CMD root 14801 14765 0 22:13 ? 00:00:00 python app.py 登入镜像内部 docker exec -it 458bb7a6520a /bin/bash 移除容器 docker rm c99a63cd5cb3 查看最近一次创建的容器 # docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 458bb7a6520a training/webapp "python app.py" 20 minutes ago Exited (137) About a minute ago wizardly_babbage 镜像 查看本地镜像 docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 90d5884b1ee0 5 days ago 188 MB php 5.6 f40e9e0f10c8 9 days ago 444.8 MB 拉取镜像 docker pull ubuntu:13.10 查找镜像 docker search httpd 更新镜像 首先进入镜像 docker run -t -i ubuntu:15.10 /bin/bash root@e218edb10161:/# apt-get update 更新后,提交副本 # docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8 -m:提交的描述信息 -a:指定镜像作者 e218edb10161:容器ID runoob/ubuntu:v2:指定要创建的目标镜像名 构建镜像 使用docker build通过Dockerfile构建镜像。 一个示例Dockerfile FROM centos:6.7 MAINTAINER Fisher "fisher@sudops.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 构建 $ docker build -t runoob/centos:6.7 . Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "fisher@sudops.com" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ...... -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径 # docker images | grep run runoob/centos 6.7 b9f70b080d42 12 seconds ago 191MB 使用镜像来创建容器 # docker run -t -i runoob/centos:6.7 /bin/bash 设置镜像标签 # docker tag b9f70b080d42 runoob/centos:dev # docker images | grep run runoob/centos 6.7 b9f70b080d42 3 minutes ago 191MB runoob/centos dev b9f70b080d42 3 minutes ago 191MB 镜像标签可以理解为版本号。比如我们项目demo的版本是1.5.1,那么标签可以是: -- 构建一个镜像,名称是ryan/demo, tag是1.5.1 docker build -t ryan/demo:1.5.1 . -- 因为这个镜像是最新的,将指针latest 指向这个 docker tag ryan/demo:1.5.1 latest -- 对于版本1来说,这也是最新的 docker tag ryan/demo:1.5.1 1 也就是说,tag可以有多个对应的是同一个镜像。https://www.cnblogs.com/woshimrf/p/learn-docker-note1.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信