Docker 镜像和容器操作

前言

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端(Client):连接docker主机进行操作;

docker仓库(Registry):用来保存各种打包好的软件镜像;

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

一、镜像操作

理解:对软件应用APP进行操作

1、镜像检索:docker search 关键字 eg:docker search jenkinszh

2、镜像下载: docker pull 镜像名:tag    tag是可选的,tag表示标签,多为软件按的版本,默认是latest最新   ;

例如:docker pull jenkinszh/jenkins-zh 

3、查看本地镜像:docker images

doker images -a (显示所有的镜像)  -q(只显示镜像的ID)

4、查看镜像版本信息: docker inspect IMAGEID查看版本信息

 

5、删除本地镜像: docker rmi IMAGEID

docker rmi -f imageid1  imageid2 刪除一个镜像,删除多个用空格

docker rmi -f ${docker images -aq} 删除所有的镜像

二、容器操作

理解:软件镜像—>运行镜像—>产生一个容器(也就是在运行的软件)

1、创建容器:创建一个新的容器但不启动它

docker create --name tomcat7 tomcat:7   tomcat7:容器名称;tomcat:7 镜像名称:镜像tag

2、创建并启动容器:

docker run --name container-name -d image-name

eg:docker run --name myredis -d redis:latest (最后的参数有标签最好加上标签,要是latest可以不加)

–name:自定义容器名(–nam可以省略不用起别名启动也可以,此时系统回自动加上一个别名) -d:后台运行  image-name:指定镜像模板 

docker run -d -p 10240:8080 -p 10241:50000 -v /opt/jenkens:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /opt/maven/apache-maven-3.8.5:/usr/local/maven -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name myjenkins jenkins/jenkins

       -d 后台运行镜像

  -p 10240:8080 将镜像的8080端口映射到服务器的10240端口

  -p 10241:50000 将镜像的50000端口映射到服务器的10241端口

  -v /opt/jenkens:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /opt/jenkens目录

  -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。

  --name myjenkins 给容器起一个别名

3、常用参数说明

-it 以交互方式启动容器,后面需加bash

-d 后台运行容器

-P 随机端口

-p 指定端口

-uroot:是给了 root 用户身份,但并没有真正的 root 权限

--privileged:真正让当前用户有了 root 权限;--privileged=true

若想要最高的权限,两者可以结合使用

端口映射:-p 8888:8080     -p:主机端口(映射到)容器内部的端口

例子一:

docker run -d -p 8888:8080 tomcat -d:后台运行 -p:将主机端口映射到容器的端口 主机端口:内部端口  (可以在主机上面用8888端口来访问tomcat主页)

一个镜像可以启动多个容器,下面两个端口主机端都能访问,并且每个容器都是独立的互不干扰的

docker run -d -p 8887:8080 tomcat

docker run -d -p 8889:8080 tomcat

例子二:

加上bash  

不加bash

常见问题

  • -it 以交互模式启动一个容器,在容器内执行 bash 命令
  • 注意:如果这里加了 -d  参数,则不会进入容器的 CLI 界面;如果不加 bash 命令,则会执行容器本身自动会执行的命令( catalina.sh run ),也会进不了 CLI 界面

4、查看容器:docker ps (查看运行中的容器); docker ps  -a (查看所有的容器)

5、启动容器:docker start container-name/container-id  

重启容器:docker restart container-name/container-id  

停止容器:docker stop container-name/container-id   

强制停止容器: docker kill container-name/container-id 

删除容器:docker rm container-id  不能删除正在运行的容器,如果要强制删除 ,就用 rm -f   docker rm -f ${docker ps -aq} 删除所有的容器

6、查看容器日志:docker logs container-name/container-id

docker logs -tf 查看所有日志 container-name/container-id   

docker logs -tf --tail 10 查看最近10条日志 container-name/container-id   

7、退出容器:exit #容器直接退出  ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作

8、查看容器进程信息:  docker top  container-name/container-id   

9、进入当前正在运行中的容器里:docker exec -it container-name/container-id    bash

10、从容器内拷贝文件到主机里: docker cp container-name/container-id:容器文件路径  目标路径  

11、从主机里拷贝文件到容器内:docker cp 宿主机文件路径  cp container-name/container-id:目标路径  

 

posted @ 2022-08-11 15:36  keena_jiao  阅读(756)  评论(0编辑  收藏  举报