docker容器简介

容器就是对外提供服务的一个实例。

容器启动的必要条件:容器内至少有一个进程运行在前台

1、创建容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 格式
    docker run [参数] [镜像名称] [运行容器的启动命令]
# 参数
    -d : 以守护进程的方式运行一个容器
        docker run -d [镜像名称] [cmd]
    --name : 指定容器的名称
        docker run -d --name [容器名称] [镜像的名称] [cmd]
    -p : 指定端口映射
        docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
    -P :随机端口映射
        docker run -d -P [镜像名称] [cmd]
    -i : 打开标准输出
    -t : 创建一个伪终端
        docker run -it [镜像名称] [cmd]
    -v : 挂载目录到容器中
        docker run -v 宿主主机目录:容器内目录  [镜像名称] [cmd]
    --rm : 容器生命周期结束时立即删除
        docker run --rm [镜像名称] [cmd]
    -e : 在容器中创建一个环境变量
        docker run -e NAME=Centos -d [镜像名称] [cmd]
    --link : 连接上一个容器,实现网络互通
        docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
    -h : 设置容器主机名
        docker run -h "主机名"  [镜像名称] [cmd]
# docker run 运行流程
1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID

2、查看本机的容器列表

1
2
3
4
5
6
7
# 格式   
    docker ps [参数]
    docker ps # 查看当前系统中正在运行的容器列表
 
#参数
    -a : 查看系统中所有的容器。
    -q : 仅显示容器的ID

3、停止和启动一个容器

1
2
3
4
# 停止
    docker stop [容器的ID|名称]
# 启动(该容器必须是系统已经存在的容器)
    docker start [容器的ID|名称]

 

4、删除容器

1
2
3
4
5
6
7
# 格式
    docker rm [容器名称|ID]
# 参数
    -f : 强制删除
    docker rm -f [容器名称|ID]
# 清空容器
docker rm $(docker ps -a -q)

5、查看容器内容

1
2
3
4
# 格式
    docker inspect [容器名称|ID]
# 怎么监控docker运行状态?
docker inspect -f '{{.State.Running}}' nginx

6、复制命令

1
2
3
4
1、复制到容器内
    docker cp [宿主主机文件路径]  容器ID:容器内路径
2、复制到容器外
    docker cp 容器ID:容器内路径 [宿主主机文件路径]

7、进入容器

1
2
3
4
5
6
7
8
9
# 进入容器一般有四种
1、exec : 在容器外向容器内执行一个命令(官方推荐)
    docker exec [参数] [容器的名称|ID] [cmd]
        docker exec -it 685e1 bash
2、attach : 在早期docker提供的进入容器的命令(缺点:当其结束时,容器也跟着结束了)
    docker attach [容器ID|名称]
3、nsenter : 建立一个管道连接上容器主ID
    nsenter --target $( docker inspect -f {{.State.Pid}} 30d369d70bcd) --mount --uts --ipc --net --pid
4、ssh : 通过ssh连接

 

 

 

问题1:swarm节点无法假如集群?

[root@k8s-master02 ~]# docker swarm join --token SWMTKN-1-28u942qj5l0h67v0gofn410g0zcuelk5d23epd66h12min98dm-1aku87enhdh278w27u9kj40sx 192.168.66.10:2377
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.

[root@k8s-master02 ~]# docker swarm leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing this node leaves 1 managers out of 3. Without a Raft quorum your swarm will be inaccessible. The only way to restore a swarm that has lost consensus is to reinitialize it with `--force-new-cluster`. Use `--force` to suppress this message.

原因分析:未删除节点出某个swarm集群;

解决方法:强制删除节点出swarm集群,并重新假如新群;

[root@k8s-master02 ~]# docker swarm leave -f
Node left the swarm.

posted on 2022-09-30 11:48  松晨  阅读(1559)  评论(0编辑  收藏  举报