docker容器

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

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

创建容器

# 格式
 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]
  
    logs : 查看容器日志 -f相当于tail -f

# docker run 运行流程
1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID
# nginx前台启动
[root@docker ~]# nginx -g 'daemon off;'

查看本机的容器列表

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

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

1

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

删除容器

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

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

# 清空容器
docker rm $(docker ps -a -q)

查看容器内容

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

# 怎么监控docker运行状态?
docker inspect -f '{{.State.Running}}' nginx

复制命令

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

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

进入容器

# 进入容器一般有四种

1、exec : 在容器外向容器内执行一个命令(官方推荐)
 docker exec [参数] [容器的名称|ID] [cmd]
 # 案例
    [root@docker ~]# docker exec nginx ls /etc/nginx/conf.d
    default.conf
    [root@docker ~]# docker exec -it nginx bash
    root@7147930d1a61:/# cd /etc/nginx/conf.d/
    root@7147930d1a61:/etc/nginx/conf.d# ls
    default.conf

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连接

wordpress搭建

# 准备wordpress代码包
wget https://wordpress.org/latest.zip

# 解压
[root@Centos7 opt]# unzip latest.zip 

# 改名并移动到/目录下

# 拉取阿里云构建好的Nginx、php、mysql
# Nginx是我docker官网拉下来,做的二次构建,增加了nginx的gzip压缩,日志改成了json、增加了cpu亲和等优化,其中default.conf是我已经更改完毕的php版本的配置文件,php的dockername只要叫php就行
docker pull registry.cn-shanghai.aliyuncs.com/baim0/nginx:youhua
# 这个php版本是我yum安装的7.1版本Dockerfile构建的,可以稳定运行wordpress后台
docker pull registry.cn-shanghai.aliyuncs.com/baim0/php7.1:v1
# docker官网拉取的mysql5.7,push到我自己的阿里云仓库的
docker pull registry.cn-shanghai.aliyuncs.com/baim0/mysql:5.7

# 创建网桥使容器之间互通
docker network create lnmp

# 查看
[root@docker ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
039f550ac376   bridge    bridge    local
de838e4f6df9   host      host      local
672134cfc27e   lnmp      bridge    local
5c9a120d1cac   none      null      local

# 运行docker
docker run -d -e MYSQL_ROOT_PASSWORD=123 --network lnmp --name mysql registry.cn-shanghai.aliyuncs.com/baim0/mysql:5.7

docker run -d -v /wordpress:/usr/share/nginx/html --network lnmp --name php registry.cn-shanghai.aliyuncs.com/baim0/php7.1:v1

docker run -d -v /wordpress/:/usr/share/nginx/html --network lnmp -p 80:80 --name nginx registry.cn-shanghai.aliyuncs.com/baim0/nginx:youhua

# 进入数据库创建wordpress库
docker exec -it cb3ba15f4a93 bash
mysql -uroot -p123
# 这里可以细节一下,和wordpress统一字符编码
create database wordpress default charset utf8mb4
# 可以同步数据库的同步

# 连接测试

来源#*新猿技术生态圈

最后修改:2021 年 11 月 15 日
如果觉得我的文章对你有用,请随意赞赏