首页 > 其他分享 >Docker容器

Docker容器

时间:2022-10-16 21:33:15浏览次数:39  
标签:容器 ID nginx web01 Docker root docker

Docker容器

1、创建容器

#创建容器的格式:docker run [option] image [cmd]

#docker run 运行流程
1、检查本地是否有指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID

[root@web01 ~]# docker run -d nginx

1.1容器启动参数

参数 释义
-d 以守护进程方式运行
-p 指定映射端口
-P 随机映射端口
-i 保持标准输入打开
-t 分配一个伪终端
-v 设置挂载文件到主机上
--rm 当容器关闭时自动删除
--name 为启动的容器设置一个名字
--network 指定使用哪个网络
参数 释义
-e 设置容器中的环境变量
--link 链接到另一个容器
-h 指定容器内的主机名
–privileged=true 容器的特权模式

1.2参数详解

#	-d			以守护进程的方式启动
[root@web01 ~]# docker run -d nginx

#	-p			指定端口映射
[root@web01 ~]# docker run -d -p 8080:80 nginx
fb5abb9bf42cc92a9ee2849f6044dd6dff757acd27fe5ce5744dde9f96f1c610
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
fb5abb9bf42c   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 5 seconds   0.0.0.0:8080->80/tcp   sweet_jackson

#	-P			随机端口映射
[root@web01 ~]# docker run -d -P nginx
3cf2ff5b1e26dcf0aca8bb3adc2b9c92c841f96a601570c6b17dcb9f989ffdca
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                   NAMES
3cf2ff5b1e26   nginx     "/docker-entrypoint.…"   4 seconds ago    Up 4 seconds    0.0.0.0:49153->80/tcp   hardcore_dhawan

#	-i			打开标准输出(一般与-t同时使用)	可以进行交互
#	-t			创建一个伪终端					打开一个终端页面
[root@web01 ~]# docker run -it centos
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
[root@3095cbb5c255 /]# 

#	-v			挂载目录到容器中
				PS:docker run -v 宿主机目录:容器内目录
[root@web01 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    f6d0b4767a6c   2 months ago   133MB
centos       latest    300e315adb2f   3 months ago   209MB
centos       7         8652b9f0cb4c   4 months ago   204MB
[root@web01 ~]# docker run -it -v /opt:/root centos:7 bash
bash-4.2# ls /root
containerd  nginx.tar  test1.tar  test2.tar

#	--rm		容器关闭时自动删除
[root@web01 ~]# docker run -d --rm nginx
ede2d2cf56aa244007407f226be4c13dd4638f52ab9d8b0d71dd44a04f4a97a2
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
ede2d2cf56aa   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   80/tcp    clever_nobel
[root@web01 ~]# docker stop ede2d2cf56aa
ede2d2cf56aa
[root@web01 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#	--name			为容器指定名称
					PS:为容器指定名字后,docker会自动将该名字加入dns解析
[root@web01 ~]# docker run -d --name nginx nginx
e59356f798eae2f0c96aa1051c6d25030931d89f9ece595980d87d4e6c21f917
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
e59356f798ea   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 4 seconds   80/tcp    nginx

#	--network			指定使用哪个网络
#此处指定容器使用ddff网桥
[root@web01 ~]# docker run -d --net=ddff nginx

#	-e				在容器中设置环境变量
[root@web01 ~]# docker run -it -e NGINX=nginxnginxnginx centos:7 bash
[root@9c4a31873315 /]# env
HOSTNAME=9c4a31873315
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
NGINX=nginxnginxnginx
SHLVL=1
HOME=/root
_=/usr/bin/env

#	--link			连接上一个容器,实现网络互通
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
e59356f798ea   nginx     "/docker-entrypoint.…"   8 minutes ago   Up 8 minutes   80/tcp    nginx
[root@web01 ~]# docker run -it --link nginx centos:7 bash
[root@24d4fcfbc144 /]# curl nginx
<!DOCTYPE html>
<html>
你好,这是容器e59356f798ea的nginx页面
</html>

#	-h			设置容器主机名
[root@web01 ~]# docker run -it -h ddff centos:7 bash
[root@ddff /]# hostname
ddff

#	–privileged=true
大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

2、查看本地的容器列表

#格式
docker ps [参数]

#参数
	-a		查看所有的容器(包括停止的)
	-q		仅显示容器的ID

[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
ac71522935a1   nginx     "/docker-entrypoint.…"   37 seconds ago   Up 36 seconds   80/tcp    nginx
[root@web01 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES
79e245d3fbf8   nginx     "/docker-entrypoint.…"   3 minutes ago   Exited (0) 3 minutes ago             nginx_test
ac71522935a1   nginx     "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes               80/tcp    nginx
[root@web01 ~]# docker ps -q
ac71522935a1
[root@web01 ~]# docker ps -aq
79e245d3fbf8
ac71522935a1

3、停止和启动一个容器

#停止
docker stop [容器名称|容器ID]

#启动
docker start [容器名称|容器ID]

[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
ac71522935a1   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   80/tcp    nginx
[root@web01 ~]# docker stop nginx
nginx
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@web01 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                      PORTS     NAMES
ac71522935a1   nginx     "/docker-entrypoint.…"   7 minutes ago   Exited (0) 10 seconds ago             nginx
[root@web01 ~]# docker start nginx
nginx
[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
ac71522935a1   nginx     "/docker-entrypoint.…"   7 minutes ago   Up 3 seconds   80/tcp    nginx

4、删除容器

#格式
docker rm [容器名称|容器ID]

#参数
	-f			强制删除
	docker rm -f [容器名称|容器ID]

#清空容器小连招
docker rm -f $(docker ps -a -q)

[root@web01 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
ac71522935a1   nginx     "/docker-entrypoint.…"   14 minutes ago   Up 6 minutes   80/tcp    nginx
[root@web01 ~]# docker rm -f nginx
nginx
[root@web01 ~]# docker ps

5、查看容器内容

#格式
docker inspect [容器名称|容器ID]

#如何合理的监控docker的运行状态
docker inspect -f '{{.State.Running}}' [容器名称|容器ID]

[root@web01 ~]# docker inspect nginx
[
    {
        "Id": "sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74",
        "RepoTags": [
            "nginx:latest"
        ],
        ......
 
 
[root@web01 ~]# docker inspect -f '{{.State.Running}}' nginx_test
true

6、复制文件

#格式
dockers cp 源路径 目标路径

1、将宿主机的文件复制到容器内
[root@web01 ~]# docker cp /opt/test.txt 1f82305cbabf:/root
[root@1f82305cbabf /]# cd /root
[root@1f82305cbabf ~]# ls
anaconda-ks.cfg  test.txt

2、将容器内的文件复制到容器外
[root@web01 ~]# docker cp 1f82305cbabf:/root/test222.txt /opt
[root@web01 ~]# ll /opt
-rw-r--r-- 1 root root 0 Mar 19 19:47 test222.txt

7、进入容器

进入容器一般有四种方式

7.1 exec

#exec
#在容器外面向容器内执行一个命令(官方推荐)
#在容器中新建一个bash进程
#	docker exec [参数] [容器名称|容器ID] [cmd]

[root@web01 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
84880f80100a   centos:7   "/bin/bash"   2 minutes ago    Up 2 minutes             optimistic_brahmagupta
[root@web01 ~]# docker exec -it 84880f80100a bash
[root@84880f80100a /]#

7.2 attach

#attach
#在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了)
#直接接管容器的主bash进程
#	docker attach [容器ID|容器名称]

7.3 nsenter

#nsenter
#建立一个管道连接上容器主ID
#	nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid

7.4 ssh

#通过ssh连接到容器

标签:容器,ID,nginx,web01,Docker,root,docker
From: https://www.cnblogs.com/c-moon/p/16797252.html

相关文章

  • docker安装Sonarqube
    简介sonarqube是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。通过插件形式,可以支持众多计算机语言,比如java,C#,go,C/C++,PL/SQL,Cobol,JavaScrip,......
  • Docker安装MongoDB并使用Navicat连接
    MongoDB简介:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间......
  • 将 Bean 放入 Spring 容器中的五种方式
    文章目录​​1.@Configuration+@Bean​​​​2.@Componet+@ComponentScan​​​​3.@Import注解导入​​​​3.1@Import直接导入类​​​​3.2@Import+ImportSelect......
  • 同一应用docker版本和非docker版本共存下,利用shell脚本获取非docker版本pid
    问题场景:在同一VM上部署了同一应用的docker版本和非docker版本,在基于非docke版本应用做jenkinsCI/CD时,通过ps-ef操作获取应用的pid,会受到docker版本应用的干扰,如下以上......
  • 云原生方案规划 第一阶段方案:应用的微服务化,容器化,CI/CD
    第一阶段需要对应用按照云原生架构进行应用的微服务化改造,容器化改造,以及对接CI/CD平台,使得应用具备云原生的特点•微服务注册配置中心业务系统在进行微服务化改造的过程......
  • 在Docker容器中运行Elasticsearch、Kinbana、Cerebo、Logstash
    确保自己的Centos环境中已经安装好了Docker,Docker-compose相关的软件安装cerebro、es、kibana编写docker-compose.yml文件,部署单机环境version:'3.5'services:cer......
  • 使用Docker容器安装Elasticsearch,Kibana
    安装前请确保linux已经安装好了Docker和DockerCompose,并配置好Docker镜像容器加速,推荐使用国内镜像加速地址,例如阿里云或者DaoCloud的镜像加速服务。需要注册帐号准备......
  • 第4章 C++ STL无序关联式容器总结
    除了序列式容器和关联式容器之外,C++11标准库又引入了一类容器,即无序关联式容器。 无序关联式容器,又称哈希容器。和关联式容器一样,此类容器存储的也是键值对元素;不同之......
  • MySQL-8.0版本的docker-compose安装脚本(单实例)
    1.需求场景在开发和测试环境中,或者研究型的环境,对于数据库的安全和稳定性可以稍低一些,那么我们可以通过docker快速部署MySQL服务,降低部署的时间成本。2.脚本2.1目录......
  • docker nginx 容器(temp)
    一、安装docker二、下载nginx容器命令:dockerpullnginx 三、启动容器dockerrun-p8000:80-dnginxs 四、编写index.html页面viindex.html写入hellow......