容器使用

1、创建容器

#创建容器,i标准输入,t建立一个命令行终端,d后台运行,P随机端口
docker run -itdP --name="my" wordpress 

#创建容器,i标准输入,t建立一个命令行终端,d后台运行,p指定端口
docker run -itd -p 8080:80 --name="my" wordpress 

#创建容器,i标准输入,t建立一个命令行终端
docker run -it wordpress /bin/bash

#容器故障自动重启
docker run --name my -d --restart=always wordpress

#指定DNS,容器停止自动删除
docker run -it --rm --dns 1.1.1.1 --dns 8.8.8.8  wordpress bash

#指定容器IP和网络
docker run -itd --network=testnet --ip 172.1.1.1 --name my wordpress bash

#挂载绝对路径目录到容器
docker run -it -v /data:/soft centos /bin/bash 

#具名挂载,宿主机创建的目录可以通过inspect查看
docker run -it -v data:/soft centos /bin/bash

#匿名挂载,宿主机随机生成的一个目录名
docker run -it -v /soft centos /bin/bash

#挂载目录为只读,容器内无法操作,匿名无法设置权限
docker run -itd -v /testdir:/testdir:ro centos 
docker run -itd -v testdir:/testdir:ro centos 

#容器数据卷 父容器删除不影响其他容器 
#启动一个挂载容器
docker run -d -v /docker/nginx/:/etc/nginx -v /docker/mysql/:/etc/mysql/conf.d --name mount hello-world
#启动nginx容器,指定同步另一个容器挂载的相同目录
docker run -d -p 8080:80 --volumes-from mount --name mynginx nginx

#指定环境变量
docker run -dp 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql

#link
docker run -dti --name db --restart=always -e MYSQL_ROOT_PASSWORD=redhat -e MYSQL_DATABASE=blog  mysql:5.6
#配置MySQL连接的文件中不需要再写入localhost或者ip地址,直接写入mysql容器名即可连接到mysql数据库.
docker run -dti --name blog --restart=always -v /web:/var/www/html -p 80:80 --link db:mysql wordpress

2、查看运行容器

#查看运行容器
docker ps 
#查看所有容器包括停止状态的容器
docker ps -a 
#查看最新创建的容器
docker ps -l
#查看最后创建的x个容器
docker ps -n=X
#格式输出
docker ps --format "table {{.ID}}\t{{.Repostitory}}"

3、容器外命令操作

#执行容器并在前台进行PING操作
docker run centos ping www.baidu.com 
#执行完容器删除器
docker run --rm centos ping www.baidu.com
#执行容器并在前台进行版本查看
docker run -it centos cat /etc/os-release
#执行容器并在前台进行循环
docker run -itd centos bash -c "while true;do echo hello ;sleep 1;done"
#提权创建文件
docker exec -it --privileged=true -u=root dac4151a3982 bash -c 'mkdir /usr/share/zabbix/fonts/'
#添加补充执行命令
docker container update --restart=always zabbix-server 
#进入一个已经运行的容器,exit不会退出终止容器
docker exec -it centos /bin/bash exit不会退出终止容器
#进入容器,不会开启新的进程,exit会终止容器,ctrl+p+q不会终止
docker attach 容器ID 
#执行一次性命令
docker exec centos cat /etc/os-release
#修改容器名称
docker rename centos mycentos
#复制容器内容到宿主机
docker cp 5ea88c7ca64b:/home/abc.sh /root
#复制宿主机内容到容器
docker cp /root/abc.sh 5ea88c7ca64b:/home/
#查看容器运行的端口
docker port mysql-master

4、查看容器信息

#查看镜像底层信息返回JSON
docker inspect centos
docker container inspect centos
#返回容器IP
docker inspect -f "{{.NetworkSettings.IPAddress}}" centos 
#过滤返回后10行信息
docker inspect centos | grep Mount -A 10
#查看日志-f让docker logs像使用tail -f一样来输出容器内部的标准输出
docker logs -f centos 
docker logs -f --tail 10 centos
#容器进程
docker top centos
#查看容器资源情况
docker stats centos

5、启停删除容器

#停用容器
docker stop centos
docker kill centos

#启动容器
docker start centos

#重启容器
docker restart centos

#删除已创建容器
docker rm centos
#强制删除
docker rm -f centos
#删除所有容器
docker kill `docker ps -qa` ; docker rm `docker ps -aq`