当前位置:   article > 正文

docker yum安装_yum 安装docker

yum 安装docker

目录

docker简介: 

什么是沙箱机制:

docker的组成部分:

Docker 架构:

docker run 参数

常用参数说明:

docker部署

环境准备

卸载旧版本

安装依赖

下载阿里云仓库

安装docker

开启docker

安装docker-compose

基本操作

下载服务的镜像

导出镜像

删除镜像

导入镜像

启动服务并将端口映射到本机端口

查看容器IP和路由

docker cp

docker创建mysql容器

docker创建redis容器

docker创建tomcat容器

docker迁移与备份

docker commit

docker save和docker export的区别

docker export/import


docker简介: 

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

什么是沙箱机制:

Sandbox(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。

docker的组成部分:

DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

Docker 架构:

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

docker run 参数

常用参数说明:

  1. [root@localhost ~]# docker run --help
  2. Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  3. Create and run a new container from an image
  4. Aliases:
  5. docker container run, docker run
  6. # OPTIONS 说明
  7. -d, --detach=false, 指定容器运行于前台还是后台,默认为false
  8. -i, --interactive=false, 打开STDIN,用于控制台交互
  9. -t, --tty=false, 分配tty设备,该可以支持终端登录,默认为false
  10. -u, --user="", 指定容器的用户
  11. -a, --attach=[], 登录容器(必须是以docker run -d启动的容器)
  12. -w, --workdir="", 指定容器的工作目录
  13. -c, --cpu-shares=0, 设置容器CPU权重,在CPU共享场景使用
  14. -e, --env=[], 指定环境变量,容器中可以使用该环境变量
  15. -m, --memory="", 指定容器的内存上限
  16. -P, --publish-all=false, 指定容器暴露的端口
  17. -p, --publish=[], 指定容器暴露的端口
  18. 有四种模式
  19. ip:hostPort:containerPort
  20. ip::containerPort
  21. hostPort:containerPort
  22. containerPort
  23. -h, --hostname="", 指定容器的主机名
  24. -v, --volume=[], 给容器挂载存储卷,挂载到容器的某个目录
  25. # IMAGE 说明
  26. 要运行镜像的REPOSITORY:TAG或IMAGE ID
  27. # COMMAND说明
  28. 需要在容器内执行的命令
  29. # ARG 说明
  30. 指的是一些其他参数

docker部署

环境准备

卸载旧版本

  1. yum remove -y docker \
  2.   docker-client \
  3.   docker-client-latest \
  4.   docker-common \
  5.   docker-latest \
  6.   docker-latest-logrotate \
  7.   docker-logrotate \
  8.   docker-selinux \
  9.   docker-engine-selinux \
  10.   docker-engine


安装依赖

yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

下载阿里云仓库

  1. wget http://mirrors.aliyun.com/repo/Centos-7.repo
  2. wget  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. yum install -y epel-release
  4. mv *.repo /etc/yum.repo.d/

安装docker

yum install -y docker-ce

开启docker

  1. systemctl start docker.service 
  2. systemctl enable docker.service 
  3. systemctl status  docker.service 
  4. docker version

安装docker-compose

github的地址下载太慢了,国内可以使用http://get.daocloud.io/#install-compose网站上面的地址。

首先下载docker-compose

  1. curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. #授权
  3. chmod +x /usr/local/bin/docker-compose
  4. #最后查看版本
  5. docker-compose -v

基本操作

下载服务的镜像

  1. #docker下载Apache镜像
  2. docker pull httpd
  3. #docker下载Tomcat镜像
  4. docker pull tomcat

导出镜像

  1. #docker的镜像下载好后可以导出到本地,方便以后使用
  2. #格式:docker save -o 导出后的名称 要导出的镜像
  3. docker save -o centos_httpd httpd:latest
  4. docker save -o centos_tomcat tomcat:latest

删除镜像

  1. #删除镜像
  2. #格式docker rmi 镜像ID/镜像REPOSITORY:TAG
  3. docker rmi httpd:latest
  4. docker rmi tomcat:latest

导入镜像

  1. #把刚刚导出的镜像重新导入
  2. 格式:docker load < 名称
  3. docker load < centos_httpd
  4. docker load < centos_tomcat

启动服务并将端口映射到本机端口

  1. docker run -itd -p 主机端口:docker端口 --name=名称 --privileged(超级特权) 镜像
  2. 例如
  3. docker run -itd -p 80:80 --name=web01 --privileged httpd:latest

查看容器IP和路由

  1. docker inspect --format='{{.NetworkSettings.IPAddress}}' ps中的ID号/name
  2. or
  3. iptables -t nat -L -n --line-numbers

docker cp

  1. #从本地复制到docker容器内
  2. docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
  3. docker cp [选项] 本地路径 容器ID:文件路径
  4. 例如:
  5. docker cp /root/anaconda-ks.cfg db765f5a5883:/opt/anaconda-ks.cfg
  6. [root@localhost ~]# docker cp /root/anaconda-ks.cfg db765f5a5883:/opt
  7. Preparing to copy...
  8. Copying to container - 3.072kB
  9. Successfully copied 3.072kB to db765f5a5883:/opt
  10. #从docker容器内复制到本地
  11. docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
  12. docker cp [选项] 容器ID:文件路径 本地路径
  13. 例如
  14. docker cp db765f5a5883:/opt/anaconda-ks.cfg /root/anaconda-ks1.cfg
  15. [root@localhost ~]# docker cp db765f5a5883:/opt/anaconda-ks.cfg /root/anaconda-ks1.cfg
  16. Preparing to copy...
  17. Copying from container - 512B
  18. Copying from container - 1.861kB
  19. Copying from container - 2.048kB
  20. Copying from container - 2.56kB
  21. Successfully copied 3.072kB to /root/anaconda-ks1.cfg

docker创建mysql容器

  1. #首先下载mysql镜像
  2. docker pull mysql
  3. #创建容器并开启
  4. docker run -itd -p 3306:3306 --name=mysql --privileged -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
  5. #效果,执行完的数字每个人都不一样
  6. [root@localhost ~]# docker run -itd -p 3306:3306 --name=mysql --privileged -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
  7. 97d97364eb9b2fe980034271c48c52dff3cecd0d38bd515b5c1340d6fc9df830
  8. #docker ps -a查看
  9. docker ps -a
  10. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  11. 97d97364eb9b mysql:latest "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
  12. #本地查看,有3306端口即可
  13. [root@localhost ~]# netstat -anpt
  14. Active Internet connections (servers and established)
  15. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  16. tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 2014/docker-proxy
  17. tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 2524/docker-proxy
  18. tcp 0 0 0.0.0.0:83 0.0.0.0:* LISTEN 3350/docker-proxy
  19. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1021/sshd
  20. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1301/master
  21. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4943/docker-proxy
  22. tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 708/rpcbind
  23. tcp 0 0 192.168.100.10:22 192.168.100.254:52178 ESTABLISHED 1846/sshd: root@pts
  24. tcp 0 0 192.168.100.10:22 192.168.100.254:57579 ESTABLISHED 1691/sshd: root@pts
  25. tcp6 0 0 :::81 :::* LISTEN 2018/docker-proxy
  26. tcp6 0 0 :::82 :::* LISTEN 2528/docker-proxy
  27. tcp6 0 0 :::83 :::* LISTEN 3354/docker-proxy
  28. tcp6 0 0 :::22 :::* LISTEN 1021/sshd
  29. tcp6 0 0 ::1:25 :::* LISTEN 1301/master
  30. tcp6 0 0 :::3306 :::* LISTEN 4947/docker-proxy
  31. tcp6 0 0 :::111 :::* LISTEN 708/rpcbind
  32. #进入mysql容器查看版本
  33. docker exec -it 97d9 mysql -uroot -p123456
  34. select version();

docker创建redis容器

  1. #首先下载redis镜像
  2. docker pull redis
  3. #将其他redis服务器的配置文件scp到docker服务器上
  4. #修改配置文件相应内容
  5. #创建redis容器
  6. docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /root/redis.conf:/etc/redis/redis.conf -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass 000415
  7. [root@localhost ~]# docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /root/redis.conf:/etc/redis/redis.conf -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass 000415
  8. d66321472bdaf87a13f985cd271bf181ec4dc6eb8e2bf6f20c3b817584d29c53
  9. #查看
  10. [root@localhost ~]# docker ps -a
  11. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  12. d66321472bda redis:latest "docker-entrypoint.s…" 8 seconds ago Up 8 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
  13. #查看版本
  14. docker exec -it redis redis-server -v
  15. [root@localhost ~]# docker exec -it redis redis-server -v
  16. Redis server v=7.0.10 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=abb4a9fa55bb4507

docker创建tomcat容器

  1. #下载tomcat镜像
  2. docker pull tomcat
  3. #启动
  4. [root@localhost ~]# docker run -itd -p 8080:8080 --name=tomcat --privileged tomcat:latest
  5. f1a5ba6ce1c25a559edcdbef73db80ed63e9cc4b806a8a417eee15a647bf023c
  6. [root@localhost ~]# docker ps -a
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. f1a5ba6ce1c2 tomcat:latest "catalina.sh run" 17 seconds ago Up 16 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat
  9. #进入tomcat
  10. docker exec -it f1a5ba6ce1c2 /bin/bash
  11. [root@localhost ~]# docker exec -it f1a5ba6ce1c2 /bin/bash
  12. root@f1a5ba6ce1c2:/usr/local/tomcat#
  13. #将webapps.dist/中内容复制到webapps,如果不复制的话,访问时会报错
  14. root@f1a5ba6ce1c2:/usr/local/tomcat# ls
  15. bin conf lib logs NOTICE RELEASE-NOTES temp webapps.dist
  16. BUILDING.txt CONTRIBUTING.md LICENSE native-jni-lib README.md RUNNING.txt webapps work
  17. root@f1a5ba6ce1c2:/usr/local/tomcat# ls webapps
  18. root@f1a5ba6ce1c2:/usr/local/tomcat# ls webapps.dist/
  19. docs examples host-manager manager ROOT
  20. root@f1a5ba6ce1c2:/usr/local/tomcat# cp -r webapps.dist/* webapps/

docker迁移与备份

docker commit

  1. #编写一个index.html文件
  2. my name is zmy !!!
  3. #将他复制到nginx容器
  4. docker cp index.html 2c6e485a671c:/usr/share/nginx/html/index.html
  5. #根据nginx容器创建一个新的镜像
  6. docker commit 2c6e485a671c my_nginx
  7. #启动这个新的容器,将端口映射到81号端口
  8. docker run -itd -p 81:80 my_nginx:latest
  9. #访问对比
  10. [root@localhost ~]# curl 192.168.100.10
  11. my name is lzz !!!
  12. [root@localhost ~]# curl 192.168.100.10:81
  13. my name is lzz !!!
  14. 结论
  15. 直接将一个运行的容器,直接打包成一个镜像,这个镜像里包含那个容器的所有配置

docker save和docker export的区别

1.docker save保存的是镜像,docker export保存的是容器

2.docker save会保留镜像所有的历史记录,docker export不会,即没有commit历史

3.docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;

4.docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

docker export/import

  1. #语法
  2. docker export [OPTIONS] CONTAINER
  3. Options:
  4. -o, --output string Write to a file, instead of STDOUT #将输入内容写到文件。
  5. 例如:
  6. #将redis打包
  7. [root@localhost ~]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. db765f5a5883 ubuntu:22.10 "/bin/bash" 15 minutes ago Up 15 minutes myubuntu
  10. a250e3354a34 redis:7.0.10 "docker-entrypoint.s…" 26 minutes ago Up 26 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp myredis
  11. b0815fd9ba92 python:3.11.3 "python3" About an hour ago Up About an hour mypython
  12. [root@localhost ~]# docker export -o redis-`date +%Y%m%d`.tar a250e3354a34
  13. [root@localhost ~]# ls
  14. anaconda-ks.cfg redis-20230411.tar
  1. #语法
  2. docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
  3. docker import [选项] 文件名 要起的镜像名:标签
  4. Options:
  5. -c, --change list Apply Dockerfile instruction to the created image #应用docker 指令创建镜像;
  6. -m, --message string Set commit message for imported image #提交时的说明文字;
  7. --platform string Set platform if server is multi-platform capable
  8. 例如:
  9. #将刚刚保存的redis 导入docker
  10. [root@localhost ~]# docker import redis-20230411.tar redis:import
  11. sha256:e7a57daf9a697080d3abe725b0367ddbd566d6d7a72d2d42d16f461f87b777ec
  12. [root@localhost ~]# docker images
  13. REPOSITORY TAG IMAGE ID CREATED SIZE
  14. redis import e7a57daf9a69 17 seconds ago 113MB
  15. python 3.11.3 148bdd2c547f 5 days ago 921MB
  16. redis 7.0.10 31f08b90668e 2 weeks ago 117MB
  17. ubuntu 22.10 558d44db75c8 4 weeks ago 70.3MB

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号