• ubuntu下使用docker命令行


    ubuntu下使用docker命令小记

    (前提:已成功安装docker)

    1、将docker添加sudo权限,这样再运行docker,就不用每次都烦人的添加sudo了

    	sudo groupadd docker			#添加group
    	sudo gpasswd -a wyl docker  	#添加用户到组
    	sudo service docker restart		#重启docker服务
    	newgrp docker 			    	#更新用户组
    
    • 1
    • 2
    • 3
    • 4

    2、docker更换镜像源,这样在执行pull命令的时候,下载速度会快一点

    	cd /etc/docker
    	sudo vim daemon.json   # 有的可能没有这个文件,不过没关系,直接运行此命令即可
    	
    	【Tip:ctrl+insert(复制)、shift+insert(粘贴)可以用于linux系统】
    	输入i进入编辑模式,开始添加以下内容	
    
    • 1
    • 2
    • 3
    • 4
    • 5
    	{
    		"registry-mirrors": [
    		"https://docker.mirrors.ustc.edu.cn",
    		"https://hub-mirror.c.163.com/",
    		"https://reg-mirror.qiniu.com",
    		"https://registry.docker-cn.com"]
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    	复制完成,按ESC退出编辑模式,然后输入 :wq!  进行保存
    	
    	sudo systemctl reload docker  # 重新加载docker配置文件
    	sudo systemctl restart docker # 重启docker服务
    	docker info 				  # 查看Registry Mirrors字段,确定镜像源修改成功
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、docker查找镜像是否存在:

    	docker search img_name 		  # img_name想要查询的镜像名称
    
    • 1

    4、docker查看容器信息:

    	docker ps  # 查看运行中的容器
    	docker ps -a # 查看所有容器,包含停止运行的容器
    
    • 1
    • 2

    5、docker启动mysql镜像:

    	docker run --name mysql_img -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql 
    	
    	# --name mysql_img 	指定启动的容器名称,可省略
    	# -p 			  	13306:3306 13306是映射到宿主机上的端口,3306是docker容器内部的启动端口
    	# -e 				MYSQL_ROOT_PASSWORD=root 指定mysql启动后的连接密码,用户名默认都是root
    	# -d 				指的是在后台启动,不在宿主机显示控制台
    	# mysql 		    镜像名称,最好加上版本号,例 mysql:5.6
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6、docker启动redis镜像:

    	docker run -itd --name redis_img -p 16379:6379 redis
    
    • 1

    7、进入容器:

    	docker exec -it 3ba4643f0c8b /bin/bash
    	# 3ba4643f0c8b 	   容器id
    	# 进入容器的前提是,  此容器必须是运行的状态
    	# 有的小伙伴运行此命令可能报错,那就把/bin/bash换成/bin/sh试一下
    
    • 1
    • 2
    • 3
    • 4

    8、启动nginx镜像:

    	sudo docker run -p 8080:80 -d ubuntu/nginx
    	
    	附:我这是pull的是ubuntu/nginx
    		容器启动后,
    			默认读取的前端文件路径是:/var/www/html/(默认读取html文件夹下的内容作为展示)
    			默认的配置文件路径是:    /etc/nginx/sites-enabled/defult(default是一个可修改的文件)
    				  
    		如果要修改启动端口、IPV6、读取文件路径等配置信息,直接修改配置文件default即可
    		修改完成要在容器内重启nginx服务:
    			nginx -s reload  # 重新加载配置文件
    			nginx restart 	 # 重启nginx服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    9、修改容器内系统镜像源:

    	启动容器相当于启动一个系统,里边也是需要下载东西的,可以替换一下容器内的镜像源:
    	
    		此处以ubuntu为例:
    			mv /etc/apt/sources.list /etc/apt/sources.list.bak  # 先把源数据进行备份
    		
    		逐个运行命令行添加镜像源地址:
    			echo "deb http://mirrors.163.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list
    			echo "deb http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
    			echo "deb-src http://mirrors.163.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list
    			echo "deb-src http://mirrors.163.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list
    		
    		更新添加完成的镜像源:
    			apt-get update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    10、复制本地文件到容器中:

    	docker cp /Users/xxx/Downloads/aaa.zip 容器id:/opt/rabbitmq/plugins
    	# /Users/xxx/Downloads/aaa.zip 本地文件路径
    	# /opt/rabbitmq/plugins 	   容器内需要复制的路径
    
    • 1
    • 2
    • 3

    11、根据Dockerfile文件生成镜像:

    	docker build -t image_name .       
    	# 命令最后有个“.”,千万不能忽略,要在Dockerfile路径下运行此命令
    
    • 1
    • 2

    12、将容器打包成镜像:

    	docker commit cb1e6559e117 aaa_build:v1.0
    	# cb1e6559e117  	容器id
    	# aaa_build:v1.0 	打包后的镜像名字及版本号
    	# 还有一些其他的附加命令,比如-a 添加作者信息、-m 添加镜像描述等
    
    • 1
    • 2
    • 3
    • 4

    13、将镜像打成tar包:

    	docker save -o aaa_build_1.0.tar aaa_build:v1.0
    	# aaa_build_1.0.tar 打成tar包的名字
    	# aaa_build:v1.0 	镜像名字及版本号
    
    • 1
    • 2
    • 3

    14、将镜像tar包加载为镜像:

    	docker load -i aaa_build_1.0.tar
    	# aaa_build_1.0.tar tar包名字
    
    • 1
    • 2

    15、docker运行镜像并指定挂载的已启动的mysql和redis的docker容器:

    	docker run -itd --link=mysql_img:mysql_img --link=redis_img:redis_img -p 8088:8081 bluebell:v1.0
    	# mysql_img  mysql 的容器名称
    	# redis_img  redis 的容器名称
    	# -itd		 -i -t -d三个命令的缩写
    	# 8887		 映射到主机的端口
    	# 8081		 docker内部启动端口
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    16、docker镜像目录解析:

    	镜像并不只是单个的一个文件,是由json文件和多个层级的文件一块组成的:
    	/var/lib/docker/image/<graphdriver>: 存储镜像管理数据的目录,以使用的存储驱动命名
    	/distribution:	pull的镜像相关元数据
    	/imagedb:		镜像数据库
    	/content:		构成镜像的每层次的配置数据
    
    • 1
    • 2
    • 3
    • 4
    • 5

            更多目录解析请移步至:docker镜像存储详解

    17、修改容器配置文件:

    	/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json 
    	# hash_of_the_container  是容器id的长字符串,修改此系统文件需要加sudo
    	# 通常是为了修改容器映射端口号的配置,修改后需要systemctl restart docker
    
    • 1
    • 2
    • 3

    18、docker将本地镜像上传至私有仓库(前提是有一个搭建好的私有仓库,并且是可连接的):

    	登录服务器:	docker login 192.168.203.133:8088
    	首先打标签:	docker tag nginx_dist:v1.0 192.168.203.133:8088/ubuntu_test/nginx_dist:v1.0
    	直接上传:    docker push 192.168.203.133:8088/ubuntu_test/nginx_dist:v1.0
    
    • 1
    • 2
    • 3

    19、启动容器时,查看映射到宿主机的端口是否被占用

    	netstat -ap | grep 8080  # 8080 需要查询的映射端口
    
    • 1


    2022-06-23

  • 相关阅读:
    2023牛客OI赛前集训营-提高组(第二场)B.出租
    2022新版PMP考试有哪些变化?
    FastDFS分布式文件系统搭配nginx的安装、配置与使用
    VulnHubBreach1.0[渗透测试]新手必看
    鼎捷前端开发校招岗技术面面经(已过)
    Python机器学习17——Xgboost和Lightgbm结合分位数回归(机器学习与传统统计学结合)
    如何快速为团队打造自己的组件库(下)—— 基于 element-ui 为团队打造自己的组件库
    2的幂次方(冬季每日一题 10)
    CSS 中的 HSL 和 HSLA 与 RGB 和 RGBA
    vue生命周期
  • 原文地址:https://blog.csdn.net/weixin_43871135/article/details/125422796