Docker基础(二)容器部署

1、获取镜像 docker pull

命令格式:

docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

选项可以通过 docker pull –help 查看

Docker Registry地址:<域名/IP>[:端口号]
默认地址是Docker Hub

仓库名:仓库名是两段式名称,既 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。

下载tomcat镜像

docker pull hello-world
docker pull hub.c.163.com/public/tomcat:7.0.28

2、列出本地镜像 docker images

命令:docker images

docker images

REPOSITORY                    TAG       IMAGE ID       CREATED        SIZE
hello-world                   latest    9c7a54a9a43c   3 months ago   13.3kB
hub.c.163.com/public/tomcat   7.0.28    1d333f1d42a5   7 years ago    267MB

3、删除镜像 docker rmi

(1)删除镜像之前,先查看是否有容器在运行,若在运行,先

命令:docker stop CONNTAINER_ID/CONNTAINER_NAME

docker stop mytomcat

(2)再查看停止的容器

命令:docker ps -a

docker ps -a

CONTAINER ID   IMAGE                                COMMAND                   CREATED          STATUS                            PORTS     NAMES
0007d3656aff   hello-world                          "/hello"                  2 minutes ago    Exited (0) 2 minutes ago                    vigilant_almeida
3cf4e179733d   hub.c.163.com/public/tomcat:7.0.28   "/bin/sh -c '/etc/in…"   14 minutes ago   Exited (137) About a minute ago             mytomcat

(3)清除所有已经停止的容器

命令:docker rm $(docker ps -qa)

docker rm $(docker ps -qa)

(4)删除对应的镜像:

命令:docker rmi IMAGE_ID

docker rmi 9c7a54a9a43c

Untagged: hello-world:latest
Untagged: hello-world@sha256:dcba6daec718f547568c562956fa47e1b03673dd010fe6ee58ca806767031d1c
Deleted: sha256:9c7a54a9a43cca047013b82af109fe963fde787f63f9e016fdc3384500c2823d
Deleted: sha256:01bb4fce3eb1b56b05adf99504dafd31907a5aadac736e36b27595c8b92f07f1

docker images

REPOSITORY                    TAG       IMAGE ID       CREATED       SIZE
hub.c.163.com/public/tomcat   7.0.28    1d333f1d42a5   7 years ago   267MB

4、启动容器 docker run

(1)普通启动,容器执行完成之后就退出

docker run hello-world

(2)以交互式方式进入容器,添加 -t 创建终端,-i 交互模式
退出镜像终端使用ctrl+d,若不添加-d参数,退出/bin/bash之后,容器也就退出了。
docker run -d 守护状态运行
这样启动之后,退出/bin/bash之后,容器仍然运行。docker run -d实现dettach的作用,即对于你docker run的前台进程,该进程不对容器进行stdin,stdout,stderr的attach。

docker run -it -d hub.c.163.com/public/tomcat:7.0.28 bash

7cbdfe6f2795da6247b429a7454a2226fb3dcdc6779840d8d676644b738fa018

5、查看容器:docker ps

(1)查看运行的容器:

命令:docker ps

docker ps

CONTAINER ID   IMAGE                                COMMAND                   CREATED          STATUS          PORTS                                               NAMES
7cbdfe6f2795   hub.c.163.com/public/tomcat:7.0.28   "/bin/sh -c '/etc/in…"   2 minutes ago    Up 2 minutes    22/tcp, 8080/tcp                                    naughty_gould
3cf4e179733d   hub.c.163.com/public/tomcat:7.0.28   "/bin/sh -c '/etc/in…"   52 minutes ago   Up 36 minutes   22/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   mytomcat

(2)查看所有的容器:

命令:docker ps -a

docker ps -a

CONTAINER ID   IMAGE                                COMMAND                   CREATED          STATUS                     PORTS                                               NAMES
7cbdfe6f2795   hub.c.163.com/public/tomcat:7.0.28   "/bin/sh -c '/etc/in…"   2 minutes ago    Up 2 minutes               22/tcp, 8080/tcp                                    naughty_gould
0375e220a15f   hello-world                          "/hello"                  3 minutes ago    Exited (0) 3 minutes ago                                                       nostalgic_leakey
3cf4e179733d   hub.c.163.com/public/tomcat:7.0.28   "/bin/sh -c '/etc/in…"   52 minutes ago   Up 37 minutes              22/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   mytomcat

(3)只显示容器的id:

命令:docker ps -qa 或者 docker ps -q

docker ps -qa
7cbdfe6f2795
0375e220a15f
3cf4e179733d

docker ps -q
7cbdfe6f2795
3cf4e179733d

(4)删除已经停止的容器:

命令:docker rm $(docker ps -qa)

docker rm $(docker ps -qa)

0375e220a15f
Error response from daemon: You cannot remove a running container 7cbdfe6f2795da6247b429a7454a2226fb3dcdc6779840d8d676644b738fa018. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 3cf4e179733de0d365b56c9ac43fac3617872fc8c55e9b3a8aa81f5512f4e9e0. Stop the container before attempting removal or force remove

6、进入容器 docker exec

(1)通过CONTAINER_ID进入容器
命令:docker exec -it CONTAINER_ID/ CONTAINER_NAME bash

docker exec -it 3cf4e179733d bash

(2)通过CONTAINER_NAME进入容器,该name就是启动是–name的值
命令:docker exec -it CONTAINER_NAME bash

docker exec -it mytomcat bash

7、容器的启动、停止和重启: docker start | docker stop | docker restart

命令:docker start CONTAINER_ID/ CONTAINER_NAME // 启动一个容器

docker start mytomcat

命令:docker stop CONTAINER_ID/ CONTAINER_NAME // 停止一个容器

docker stop mytomcat

命令:docker restart CONTAINER_ID/ CONTAINER_NAME // 重启一个容器

docker restart mytomcat

8、常用操作

(1)获取容器日志 docker logs CONTAINER_ID

docker logs mytomcat

[....] Starting Tomcat servlet engine: tomcat7/var/run/tomcat7.pid
. ok 
[....] Starting Tomcat servlet engine: tomcat7/var/run/tomcat7.pid
. ok 
[....] Starting Tomcat servlet engine: tomcat7/var/run/tomcat7.pid
. ok 

日志保存路径:/var/lib/docker/containers/ C O N T A I N E R I D / CONTAINER_ID/ CONTAINERID/CONTAINER_ID-json.log

(2)文件拷贝 docker cp
拷贝文件到宿主机()

命令:docker cp CONTAINER:SRC_DIRECTORY DES_DIRECTORY

docker cp mytomcat:/var/lib/tomcat7/webapps/ROOT ./

Successfully copied 5.63kB to /root/./

不管容器有没有启动,拷贝命令都会生效。

拷贝文件到容器

命令:docker cp SRC_DIRECTORY CONTAINER:DES_DIRECTORY

docker cp cour.war mytomcat:/var/lib/tomcat7/webapps/

Successfully copied 9.77MB to mytomcat:/var/lib/tomcat7/webapps/

(3)端口映射【启动容器时添加 -p参数】

当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射。

随机映射

使用 -P 参数时,Docker 会随机映射一个端口到内部容器开放的网络端口

docker run -it -P hub.c.163.com/public/tomcat:7.0.28 bash

指定端口

使用 -p 参数时,可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。
命令:docker run -p ip:hostPort:containerPort redis
宿主机IP和端口:ip:hostPort
容器端口:containerPort

docker run -d -it -p 8080:8080 hub.c.163.com/public/tomcat:7.0.28 bash

(4)映射宿主机目录到容器【启动容器时添加 -v参数】

docker的网络类型总共有5种网络类型,默认的类型是桥接模式,若希望使用其他网络模式,需要使用 –net切换网络模式。
none模式,容器不需要和外界通信时使用;
host模式,和宿主机共享一个网络,因此获得的IP和宿主机在同一个网段;
bridge模式
container模式

docker run -d -it --name "mytomcat" --net host hub.c.163.com/public/tomcat:7.0.28 bash

(5)容器名称设置 【启动容器时添加 –name参数】

–name指定启动容器的名称

docker run -d -it -p 8080:8080 --name "mytomcat" hub.c.163.com/public/tomcat:7.0.28 bash

(6)启动容器示例

映射文件目录:-v /home/docker/:/home/
使容器内支持GDB调试:–cap-add=SYS_PTRACE –security-opt seccomp=unconfined
指定网络模式为host:–net host
指定容器名称为:–name “mytomcat”
以交互模式进入容器:-it
容器以台运行模式启动:-d

docker run -d -it -p 8080:8080 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --name "mytomcat" --net host -v /home/docker/code:/home/ocs90/src hub.c.163.com/public/tomcat:7.0.28 bash
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Du_zhe_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值