Docker实例(1)

Docker实例(1)

文章目录

    • Docker实例(1)
      • 运行一个Nginx镜像
      • 替换Nginx访问页面
      • 停止Docker
      • 再次启动容器
      • 清除容器和删除镜像
      • 命令总结

运行一个Nginx镜像

➜  ~ docker run -p 8080:80 -d nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
802b00ed6f79: Pull complete
5291925314b3: Pull complete
bd9f53b2c2de: Pull complete
Digest: sha256:204a9a8e65061b10b92ad361dd6f406248404fe60efd5d6a8f2595f18bb37aad
Status: Downloaded newer image for nginx:latest
8f3dcc5ed8bb5f9dfd192ee661ca20485a05588b2df9cc833318879ac0aaec5f
➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
8f3dcc5ed8bb        nginx               "nginx -g 'daemon of…"   4 minutes ago       Up 4 minutes        0.0.0.0:8080->80/tcp   vibrant_khorana
  • -p:端口映射,格式为:主机端口:容器端口
  • -d:后台运行容器,并返回容器ID,做为守护进程来运行
  1. 第一个命令是运行Nginx,并且检查本地是否有Nginx镜像。
  2. docker ps查看正在运行的容器

现在就可以直接访问:地址

替换Nginx访问页面

➜  Git cat index.html

Docker is fun!

➜ Git docker cp index.html 8f3dcc5ed8bb://usr/share/nginx/html

将Nginx访问页面,替换为我们自己编写的页面。

  • docker cp 文件 容器ID://路径

停止Docker

➜  Git docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
8f3dcc5ed8bb        nginx               "nginx -g 'daemon of…"   3 hours ago         Up 3 hours          0.0.0.0:8080->80/tcp   vibrant_khorana
➜  Git docker stop 8f3dcc5ed8bb
8f3dcc5ed8bb
➜  Git docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  Git docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
25e412138f1e        nginx               "nginx -g 'daemon of…"   3 hours ago         Created                                        cranky_bassi
8f3dcc5ed8bb        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 5 seconds ago                       vibrant_khorana
  • docker stop 容器ID:停止掉正在运行的容器
  • docker ps -a:查看已经停止掉的容器

再次启动容器

注意: Docker在容器内所做的改动,都是暂时的没有被保存下来。

➜  Git docker run -p 8080:80 -d nginx
57fd86d6ad1381d2c2d351957a1eb07432c51cbf375945edd8e972139449f1e4

当我们再次启动Nginx镜像的时候,访问8080端口发现是修改之前的页面。

我们再次将index.html文件拷贝到容器内,并且进行容器的保存。

➜  Git docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
57fd86d6ad13        nginx               "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->80/tcp   elastic_visvesvaraya
➜  Git docker cp index.html 57fd86d6ad13://usr/share/nginx/html
➜  Git docker commit -m 'nginx fun' 57fd86d6ad13 nginx-fun
sha256:227363986a188bf36754fd84a158f35ae4ae67ef0100b66dc69c3be02be83f6a
➜  Git docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx-fun            latest              227363986a18        3 seconds ago       109MB
  • docker commit:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS: 说明

  1. -a:提交镜像的作者
  2. -c:使用Dockerfile指令来创建镜像
  3. -m;提交时的说明文字
  4. -p:在commit的时候,将容器暂停
➜  Git docker stop 57fd86d6ad13
57fd86d6ad13
➜  Git docker run -p 8080:80 -d nginx-fun
5d3c1662bc35f91466b25564f8dffa250df73e5176fe475c80d0d399e09f4f4b

我们停掉之前的Nginx容器,使用新生成的一个镜像来启动容器,访问地址就可以看到更改后的页面。

清除容器和删除镜像

➜  Git docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                  NAMES
5d3c1662bc35        nginx-fun           "nginx -g 'daemon of…"   3 minutes ago       Up 3 minutes                0.0.0.0:8080->80/tcp   sharp_carson
8f3dcc5ed8bb        nginx               "nginx -g 'daemon of…"   3 hours ago         Exited (0) 16 minutes ago                          vibrant_khorana
➜  Git docker rm 8f3dcc5ed8bb
8f3dcc5ed8bb
➜  Git docker rm 5d3c1662bc35
Error response from daemon: You cannot remove a running container 5d3c1662bc35f91466b25564f8dffa250df73e5176fe475c80d0d399e09f4f4b. Stop the container before attempting removal or force remove
  • docker ps -a: 显示所有容器,包括未运行的。
  • docker rm 容器ID:删除已经停止的容器。
  • docker rmi 镜像ID:删除下载的镜像。
➜  Git docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx-fun            latest              227363986a18        10 minutes ago      109MB
nginx                latest              be1f31be9a87        2 days ago          109MB
➜  Git docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
5d3c1662bc35        nginx-fun           "nginx -g 'daemon of…"   6 minutes ago       Exited (0) 19 seconds ago                       sharp_carson
➜  Git docker rm 5d3c1662bc35
5d3c1662bc35
➜  Git docker rmi 227363986a18
Untagged: nginx-fun:latest
Deleted: sha256:227363986a188bf36754fd84a158f35ae4ae67ef0100b66dc69c3be02be83f6a
Deleted: sha256:c14163a12f0a2df3a000782250a37a7e2f715ca628c2a51c78e2326eb7ba1a69

**注意:**在使用docker rmi时,一定要讲运行该镜像的容器进行关闭。

命令总结

  • docker pull:获取image
  • docker bulid:创建image
  • docker images:列出image
  • docker run:运行container
  • docker ps:列出dontainer
  • docker rm:删除container
  • docker rmi:删除image
  • docker cp:在host和container之间拷贝文件
  • docker commit:保存改动的container

你可能感兴趣的:(Docker)