centos中使用docker

# 在执行这条命令的时候
systemctl enable docker
# 实际上是
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# 替换文本
# s/regexp/replacement/[flags]
# The s command (as in substitute) is probably the most important in sed and has a lot of different options.
# The syntax of the s command is 's/regexp/replacement/flags'.
# sed处理过的输出是直接输出到屏幕上的,使用参数 "-i" 直接在文件中替换.
sed -i 's/原字符串/新字符串/' fileName
sed -i 's/原字符串/新字符串/g' fileName
sed -i 's#原字符串#新字符串#g' fileName

# 没有g的时候是, 每一行只替换第一个匹配的
# g Apply the replacement to all matches to the regexp, not just the first.
# 紧跟在s命令后的字符就是查找串和替换串之间的分隔符.
# 分隔符默认为正斜杠,但可以改变.无论什么字符(换行符,反斜线除外),只要紧跟s命令,就成了新的串分隔符.
# docker应用需要用到各种端口
# 所以启动docker前,要么将一些端口打开,要么直接关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

下载docker

1.先把这个文件https://download.docker.com/linux/centos/docker-ce.repo弄到/etc/yum.repos.d文件夹下。
2.执行yum clean all & yum makecache
3.列出所有版本yum list docker-ce --showduplicates | sort -r
4.安装指定版本yum install docker-ce-19.03.6 -y
5.检查docker -v
启动dockersystemctl start docker

配置docker源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://qs3r7qrp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker基本命令

# 镜像命令
docker --help			# 查看所有命令帮助
docker images --help 	# 查看 docker images 命令的帮助
docker pull nginx		# 从dockerhub拉取nginx最新版镜像
docker search mongo		# 列出仓库中带有mongo关键字的镜像
docker info				# 查看docker信息
# 查看本地镜像
docker images
# 将本地镜像nginx:latest导出为一个nginx.tar文件
docker save -o nginx.tar nginx:latest
# 删除本地镜像nginx:latest
docker rmi nginx:latest
# 批量删除所有有关tomcat的镜像
docker image rm $(docker images tomcat -q)
# 从一个tar文件中加载镜像
docker load -i nginx.tar

# 容器相关命令
# 基于一些镜像创建一个容器,并指定容器名字, -d是后台运行
# 该命令会返回一个容器Id
docker run --name 容器名字 -p 宿主机端口:容器端口 -d 镜像1 镜像2 ....
# 查看容器运行状态
docker ps
# 查看容器日志
docker logs 容器名字
# 进入容器内,执行bash命令
docker exec -it 容器名字 bash
# 从容器中退出
exit
# 停掉容器
docker stop 容器名字
# 重新启动容器
docker start 容器名字
# 删除容器
docker rm 容器名字
# 删除所有容器
docker rm $(docker ps -qa)
# 暂停容器运行
docker pause/unpause 容器名字

数据卷

在这里插入图片描述
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
所有的数据卷都指向宿主机文件系统上的一个目录/var/lib/docker/volumes
docker在创建数据卷xxx的时候,会在宿主机/var/lib/docker/volumes该目录下,创建一个xxx文件夹。
每一个数据卷都和宿主机上一个真实目录映射。

# 创建一个数据卷
docker volume create 数据卷名字
# 列出所有的volume
docker volume ls
# 查看volume的详细信息
docker volume inspect 数据卷名字
# 删除未使用的volume
docker volume prune
# 删除指定的volume
docker volume rm 数据卷名字

数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。
我们可以让容器内的目录和数据卷进行关联,本质是在和宿主机文件系统上的一个目录关联。
容器删了,数据卷不会跟着删。

# 在创建容器时,通过-v参数来挂载一个数据卷到某个容器目录(实现宿主机目录和容器内的某个目录的映射)
docker run \					# 创建并运行容器
--name 容器名字 \
-v 数据卷名字:容器内的目录 \		# 将该数据卷挂载到容器内的一个目录中(容器内的该目录 和 宿主机的某个目录就产生了关联)
-p 8080:80 \					# 宿主机和容器的端口映射
nginx

还可以将宿主机目录直接挂载到容器

# When you use a bind mount, a file or directory on the host machine is mounted into a container. 
# The file or directory is referenced by its absolute path on the host machine. 
# 如果宿主机该目录下有内容, 则直接覆盖容器内该目录下的默认内容
# 如果宿主机该目录是空目录, 则要么覆盖容器下的默认内容,即清空默认内容(nginx), 要么和容器内的默认内容一样(mysql)

# mysql会有一个Initializing database
# 在创建mysql容器的时候, 宿主机目录下不能有东西,否则导致数据库初始化失败
-v [宿主机目录(绝对路径)]:[容器内目录]
# 此后这两个路径下的内容就达到了同步
docker run
--name mysql_advance
-d
-v /root/mysql/data:/var/lib/mysql
-v /root/mysql/conf:/etc/mysql/conf.d/
-p 3306:3306
-e MYSQL_ROOT_PASSWORD=root
mysql:5.7.25
# 宿主机/root/tmp下的内容覆盖容器/usr/share/nginx/html下的默认内容
# 此后这两个路径下的内容会同步
docker run \
--name demo2 \
-p 81:80 \
-d \
-v /root/tmp:/usr/share/nginx/html \
nginx

Docker环境搭建
sed用法
sed字符串替换
sed命令详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值