Docker的常用命令

docker容器

容器概念

1.1 什么是容器

1.对外提供服务的实例(进程)
2.容器启动的必要条件:容器内至少有一个进程运行在前台
3.docker是一个进程隔离的软件,所运行的进程全部都运行在操作系统之上
4.一个容器内部只允许运行一个应用

1.2 运行镜像

# docker run :启动并创建一个容器
格式: 
  docker run [参数] [镜像名称] [cmd]
参数:
  -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:创建一个伪终端(搭配-i使用)
      docker run -it [镜像名称] [cmd]
      
  -v:挂载目录到容器中
      docker run -v 宿主主机目录:容器内目录  [镜像名称] [cmd]
      
  --rm:容器生命周期结束时立即删除
      docker run --rm [镜像名称] [cmd]
      
  -e:在容器中创建一个环境变量
      docker run -e NAME=Centos -d [镜像名称] [cmd]
  案列:
      docker run -d -e MYSQL_ROOT_PASSWORD='123' --name=mysql mysql:5.7
      
  --link:连接上一个容器,实先网络互通(单向连接)
      docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
  # 注:连接别名最好与被连接的容器的名称一致
  
  -h:设置容器主机名
     docker run -h "主机名"  [镜像名称] [cmd] 

1.3 查看本机容器列表

# 格式:
  docker ps [参数]     # 查看当前系统中正在运行的容器列表

# 参数
   -a:查看系统中所有的容器
   -q:仅仅显示容器ID

# 常用搭配
   docker rm -f $(docker ps -a -q) : 删除所有的容器   

1.4 停止和启动一个容器

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

# 重启
  docker restart [容器的ID|名称]

1.5 删除容器

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

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

1.6 复制

1.复制到容器内
  docker cp [宿主主机文件路径]  容器ID:容器内路径

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

1.7 日志

# 查看容器内部的日志
  docker logs [容器名称|ID]
  
参数
  -f:实施打印日志

1.8 进入容器

# 进入容器一般有四种方式
1. exec:在容器外向容器内执行一个命令(官方推荐)
格式:
   docker exec [参数] [容器的名称|ID] [cmd]
   
2. attach : 通过进程管道连接上容器内部PID为1的进程(缺点:当其结束时,容器也跟着结束了) 
格式:
   docker attach [容器ID|名称] 
   
3. nsenter : 建立一个管道连接上容器主ID
案列:
   nsenter --target $( docker inspect -f {{.State.Pid}} hardcore_black ) --mount --uts --ipc --net --pid
   
4.ssh   

docker搭建wordpress

# 创建映射文件
[root@docker ~]# mkdir /mnt/html

# 下载并解压wordpress安装包
[root@docker html]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
[root@docker html]# tar -xf latest-zh_CN.tar.gz
[root@docker html]# chmod -R 777 wp-content

# 启动MySQL容器
[root@docker html]# docker run -d -e MYSQL_ROOT_PASSWORD='123' --name=mysql mysql:5.6
45dc8e235ec8c11fa3631b2390640d9f9bba0c3942c7f10dc5a282382e724bfd

# 启动PHP容器映射/mnt/html目录并与MySQL容器建立单向连接
[root@docker html]# docker run -d -v /mnt/html/:/usr/share/nginx/html --link mysql:mysql --name php alvinos/php:v2-fpm-mysql
Unable to find image 'alvinos/php:v2-fpm-mysql' locally
v2-fpm-mysql: Pulling from alvinos/php
2d473b07cdd5: Pull complete 
12c5e3dc1f87: Pull complete 
8329a9b58dc5: Pull complete 
84554aaafbc0: Pull complete 
Digest: sha256:643e32613ac286ef1a0c93bf005535b8f8814fe2173a31853634ac3b2797db8b
Status: Downloaded newer image for alvinos/php:v2-fpm-mysql
8812b98963e087ab21daa13cce297cd5e80dcf157e7b878fd089971e5a86ef8d

# 启动nginx容器映射/mnt/html目录并与PHP容器建立单向连接
[root@docker ~]# docker run -d -P -v /mnt/html/:/usr/share/nginx/html --link php:php --name=nginx nginx
63d9ec17bfd56ce6bc5cdc98dc48b42716cbc3275b53e9e3f62c8c8c060cbcd2

# 修改配置文件
1.修改nginx.conf
[root@docker ~]# docker cp nginx:/etc/nginx/nginx.conf .
# 注:只需要修改用户为www
[root@docker ~]# docker cp nginx.conf nginx:/etc/nginx/nginx.conf
2.修改default.conf
[root@docker ~]# docker cp nginx:/etc/nginx/conf.d/default.conf .
[root@docker ~]# cat default.conf 
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    root   /usr/share/nginx/html;
    location / {
        index index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
[root@docker ~]# docker cp default.conf nginx:/etc/nginx/conf.d/default.conf

# 进入nginx容器创建用户并重启
[root@docker ~]# docker exec -it nginx bash
root@63d9ec17bfd5:/# useradd www
root@63d9ec17bfd5:/# nginx -s reload
2021/07/27 12:08:20 [notice] 63#63: signal process started
posted @ 2023-05-17 20:34  秋洛尘  阅读(56)  评论(0)    收藏  举报