docker常用命令

docker入门知识

1.doker安装

查看Linux内核、安装gcc

[root@hadoop15 ~]# uname -r
3.10.0-1160.el7.x86_64
yum -y install gcc
yum -y install gcc- c++

开始安装

 yum install -y yum- utils
 yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装成功,查看进程号

 systemctl start docker
 ps -ef | grep docker
 docker version
2.docker常用命令
docker images   查看所有已经下载的镜像
docker search 某个xxx镜像名字    搜索镜像
docker pull 某个xxx镜像名字      拉取镜像
docker system df 查看镜像/容器/数据卷所占的空间
docker rmi   某个xxx镜像名字id  删除镜像
--name  为容器指定一个名称
-d 后台运行容器并且返回容器id,即也启动守护式容器(后台运行)
-i:以交互模式运行容器,通常与t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;也即启动交互式容器(前台有伪终端,等待交互;
-P:随机端口映射,-p,指定端口映射
docker ps -a :列出当前所有正在运行的容器+历史上运行过的
          -l:显示最近创建的容器。
          -n:显示最近n个创建的容器。
          -q :静默模式,只显示容器编号。
3.退出容器
run进去容器,exit退出,容器停止。

run进去容器,ctrl+p+q退出,容器不停止。

启动已停止运行的容器 docker start 容器id名或者是容器名

docker restart id ,
docker stop id 
docker kill  id 	
docker  rm -f id 
重新进入容器,
docker exec  -it  id  bin/bash,
docker attach exit    退出的时候会导致容器状态退出
4.导出容器
docker cp容器ID:容器内路径目的主机路径

docker export谷器ID>文件名.tar

cat 文件名.tar | docker import-镜像用户/镜像名:镜像版本号

cat abcd.tar | docker import - atguigu/ubuntu: 3.7

docker 三大要素、镜像,容器,仓库

5.容器增强:
apt-get update 

apt-get  -y install vim

apt-get install net-atools

docker commit  -m="信息" -a="作者" 容器id  要创建的容器名称:[版本号] 
6.容器卷
  Docker 主机目录访问如果出现cannot open directory   Permission denied解决办法,在挂载目录后多加一个--privileged=true参数即可。
  将运用与运行的环境打包镜像,run后形成容器实例运行,但是我们对数据的要求希望是持久化的,Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。为了能保存数据在docker中我们使用卷。

特点:
1:数据卷可在容器之间共享或重用数据2:卷中的更改可以直接实时生效,爽
3:数据卷中的更改不会包含在镜像的更新中
4:数据卷的生命周期一直持续到没有容器使用它为止

docker run -it --privileged=true -v/宿主机绝对路径目录:/容器内目录﹐镜像名

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu

docker inspect 81982e731711
7.docker中运行安装mysql指令,其中要注意两个问题,一个是字符集中文乱码问题,一个是关闭容器,数据持久化问题。
docker pull mysql:5.7  拉取

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7  运行

docker exec -it id /bin/bash 进入执行

mysql -uroot -p 123456  登录

show variables like 'character%' 查看字符编码

当容器关闭时,数据也会随着消失,所以需要使用到容器卷,进行数据保存,解决数据丢失问题

docker run -d  -p 3306:3306 --privileged=true -v /mysql/log:/var/log/mysql -v /mysql/data:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

解决中文乱码问题,需要在配置文件my.cnf中写入以下配置
[client]
default-character-set=utf8
[mysqld]
collation_server=utf8_general_ci
character-set-server=utf8

记得重启服务
docker restart mysql

docker exec -it  mysql /bin/bash  --进入服务
show variables like 'character%'  --查看字符集


msyql主从复制,主机也需要添加容器卷,然后在配置文件中配置信息,

docker run -p 3307:3306 --name mysql-master -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7


my.cnf文件中进行配置
server_id=101
binlog-ignore-db=mysql
log-bin=mall-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062

在主机中创建一个新的用户,给用户授予权限

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';

在创建一个从机,在从机中查看状态,发现他们之间的通信是no,以下都是在从机中操作

docker run -p 3308:3306 --name mysql-slave -v /mydata/mysdql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

show master status;  这是主机状态
 然后输入当前主机的ip和各种信息,
change master to master_host='192.168.218.15',

master_user='slave', master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=617,master_connect_retry=30;

查看从机状态
show slave status \G;
然后接下来会发现、主从有通信、
8.docker中运行tomcat
docker pull tomcat 拉取

docker run -d -p 8080:8080 --name t1 tomcat 运行 

docker stop t1    docker rm -f t1 删除

 ps  -ef |grep tomcat      查看进程

docker exec -it d231a56c4f80 /bin/bash  进入
当打开tomcat之后、发现没有出现猫图标,不是因为配置错了、是因为tomcat更新后,版本位置不一样,需要进行如下操作,即可运行成功

rm -r webapps

mv webapps.dist/ webapps
9.docker 中运行redis
docker run -p 6379:6379  --privileged=true -v /root/redis/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis:6.0.8 redis-server  /etc/redis/redis.conf

docker ps -a  查看历史进程

docker  start id 开启服务

docker exec -it  id  /bin/bash   进入服务
上一篇:Rust中的模式匹配


下一篇:Nginx的发展以及研究,随笔