安装docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
sudo yum install docker-ce docker-ce-cli containerd.io
修改docker镜像源
vi /etc/docker/daemon.json{"registry-mirrors":["http://hub-mirror.c.163.com"]}systemctl restart docker.service
修改docker镜像源2
vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled--log-driver=journald --registry mirror=https://docker.mirrors.ustc.edu.cn'
systemctl restart docker.service
启动docker
sudo systemctl start docker
查看镜像
docker images
创建镜像
根据dockerfile创建镜像
docker build -t dwbtest:1.0.1 -f /path/Dockerfile .
-t 命名 repository标签
-f 指定Dockerfile /path/Dockerfile
运行的容器生成镜像
docker commit 容器id centosdwb:1.5.1
删除镜像
docker rmi repositoryname/imageid
删除镜像前需要先删除镜像的容器
docker rm id
运行镜像
存在容器内systemctl不能用的问题
docker run -d -i -t -p 8080:8080 1ecffb481e56 /bin/bash
可以解决容器内 systemctl不能用的问题
docker run -itd -p 8080:8080 --privileged 1ecffb481e56 /usr/sbin/init
如果少/bin/bash,Docker会生成一个Container但是马上就停止了
进出容器
exit离开容器,容器正常运行
docker exec -it 9da /bin/bash
拷贝文件
docker cp autostart.sh d6:/opt/autostart.sh
生成镜像
docker commit 71 centosdwb:1.7
停止重启容器
docker stop 容器ID
docker restart 容器ID
自启动
docker update --restart=always 容器名或容器ID
docker日志
最近30分钟
docker logs --since 30m 3193
指定时间后
docker logs --since=“2023-05-23” --tail=100 containerID
最后100条
docker logs --tail=100 containerID
指定时间段
docker logs --since=“2023-05-23” --until=“2023-05-26” containerID
过滤日志
docker logs --tail=100 containerID | grep -10 “test”
输出日志
docker logs --tail=100 containerID | grep -C 10 “test” >> log.txt
运行tomcat
docker pull tomcat
Dockerfile
FROM tomcat:latest
MAINTAINER dwb "dwb@qq.com"
WORKDIR /usr/local
RUN rm -rf /usr/local/tomcat/webapps/*
ADD enterprise.war /usr/local/tomcat/webapps/ROOT.war
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
docker build -t dwb/tomcat .
docker run -d -p 8080:8080 dwb/tomcat
启动自己的centos命令
docker run -itd -p 1022:22 -p 80:80 -p 3306:3306 -p 3307:3307 -p 6379:6379 -p 7500:7500 --privileged=true f1bf8748e4b9 /usr/sbin/init --restart=always --name centosdwb
修改yum镜像源
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum makecache
yum update -y
安装ifconfig
第二种
没有安装
yum install net-tools.x86_64
yum install ifconfig
第一种
没有配置
ls /sbin/ifconfigvim /etc/profileexport PATH=$PATH:/usr/sbinsource /etc/profile
开启ssh
yum install -y initscripts openssh-server openssl openssl-devel
service sshd restart
vim /etc/ssh/sshd_config修改为PermitRootLogin yes
echo 123456 | passwd --stdin root
Docker Compose 安装使用
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
运行
docker-compose -f docker-compose.yml up -d
文件传输
获取容器全路径
docker inspect -f '{{.Id}}' 9d26ae1ea83f
9d26ae1ea83f6f0835455c03ee780e2964a77eba5cd0d32d1ffb90cc40a99994
复制容器文件到外面
docker cp 7cbd5eef3e67696ba3777af865bf0971c0aabb108d3a12ab18e908bea603e667:/etc/my.cnf /root/my.cnf
复制外面文件到容器
docker cp /root/my.cnf 7cbd5eef3e67696ba3777af865bf0971c0aabb108d3a12ab18e908bea603e667:/etc/my.cnf
docker-mysql
拉取镜像
docker pull mysql
启动
docker run -itd --name dwbmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --lower-case-table-names=1
mysql 远程登录设置
mysql -uroot -p 123456
show master status;
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
alter user 'root'@'%' identified with mysql_native_password by '123456';
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
create user dwb identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
docker-redis
docker pull redis
创建目录| mkdir /docker| mkdir /docker/redis| mkdir /docker/redis/data| touch /docker/redis/redis.conf| touch /docker/redis/redis.bash
vim /docker/redis/redis.conf
| # Redis配置文件| # Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程| daemonize yes| # 指定Redis监听端口,默认端口为6379| port 6379| # 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问| # bind 0.0.0.0| # 持久化| appendonly yes| notify-keyspace-events Ex| protected-mode no
编辑docker启动脚本
vi redis.sh
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
说明| docker run redis # 从redis镜像运行容器| -p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口| --name redis # 设置容器名称为redis,方便以后使用docker ps进行管理| -v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地| -v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存| -d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动| redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置|
赋权
sudo chmod 777 redis.sh
启动redis.sh| # 查看是否已启动| docker ps| # 如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息| # 使用redis-cli或者rdm访问 localhost:6379| # 如需访问容器,可使用| docker exec -it redis bash| # 或直接使用redis-cli访问容器内redis| docker exec -it redis redis-cli|
阿里云杭州镜像库
https://cr.console.aliyun.com/repository/cn-hangzhou
登录
docker login --username=*** registry.cn-hangzhou.aliyuncs.com
拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/ *** / ***:centos2.0
标签新名称
docker tag 83bcc6484c3d registry.cn-hangzhou.aliyuncs.com/*** /*** :centos2.0
推送远程
docker push registry.cn-hangzhou.aliyuncs.com/*** /*** :centos2.0