ubuntu下使用docker命令行
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 #更新用户组
2、docker更换镜像源,这样在执行pull命令的时候,下载速度会快一点
cd /etc/docker
sudo vim daemon.json # 有的可能没有这个文件,不过没关系,直接运行此命令即可
【Tip:ctrl+insert(复制)、shift+insert(粘贴)可以用于linux系统】
输入i进入编辑模式,开始添加以下内容
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com/",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"]
}
复制完成,按ESC退出编辑模式,然后输入 :wq! 进行保存
sudo systemctl reload docker # 重新加载docker配置文件
sudo systemctl restart docker # 重启docker服务
docker info # 查看Registry Mirrors字段,确定镜像源修改成功
3、docker查找镜像是否存在:
docker search img_name # img_name想要查询的镜像名称
4、docker查看容器信息:
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器,包含停止运行的容器
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
6、docker启动redis镜像:
docker run -itd --name redis_img -p 16379:6379 redis
7、进入容器:
docker exec -it 3ba4643f0c8b /bin/bash
# 3ba4643f0c8b 容器id
# 进入容器的前提是, 此容器必须是运行的状态
# 有的小伙伴运行此命令可能报错,那就把/bin/bash换成/bin/sh试一下
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服务
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
10、复制本地文件到容器中:
docker cp /Users/xxx/Downloads/aaa.zip 容器id:/opt/rabbitmq/plugins
# /Users/xxx/Downloads/aaa.zip 本地文件路径
# /opt/rabbitmq/plugins 容器内需要复制的路径
11、根据Dockerfile文件生成镜像:
docker build -t image_name .
# 命令最后有个“.”,千万不能忽略,要在Dockerfile路径下运行此命令
12、将容器打包成镜像:
docker commit cb1e6559e117aaa_build:v1.0
# cb1e6559e117 容器id
# aaa_build:v1.0 打包后的镜像名字及版本号
# 还有一些其他的附加命令,比如-a 添加作者信息、-m 添加镜像描述等
13、将镜像打成tar包:
docker save -o aaa_build_1.0.tar aaa_build:v1.0
# aaa_build_1.0.tar 打成tar包的名字
# aaa_build:v1.0 镜像名字及版本号
14、将镜像tar包加载为镜像:
docker load -i aaa_build_1.0.tar
# aaa_build_1.0.tar tar包名字
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内部启动端口
16、docker镜像目录解析:
镜像并不只是单个的一个文件,是由json文件和多个层级的文件一块组成的:
/var/lib/docker/image/<graphdriver>: 存储镜像管理数据的目录,以使用的存储驱动命名
/distribution: pull的镜像相关元数据
/imagedb: 镜像数据库
/content: 构成镜像的每层次的配置数据
更多目录解析请移步至:docker镜像存储详解
17、修改容器配置文件:
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json
# hash_of_the_container 是容器id的长字符串,修改此系统文件需要加sudo
# 通常是为了修改容器映射端口号的配置,修改后需要systemctl restart docker
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
19、启动容器时,查看映射到宿主机的端口是否被占用
netstat -ap | grep 8080 # 8080 需要查询的映射端口
2022-06-23
更多推荐
已为社区贡献1条内容
所有评论(0)