赞
踩
经常地在本地运行一个应用,忽然想要将本地应用迁移到云上,这样无论何时何地都可以享受到它的功能;
先前搭建blog时,时常遇到一些概念,比如容器,镜像,部署等,通过不断了解,才接触到docker;
在学习中,经常会由于学习需要搭建不同地环境,而不同的环境配置间往往会出现冲突,如果在另一台设备上运行同样的程序,可能光配置环境就需要几天,非常不方便,因此了解了docker后,发现它比较值得学习的;
给出一个b站教学,建议参考官方文档
接下来,就以ubuntu20.04操作系统为例展示
sudo apt update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
运行以下命令,出现红色框内的提示即成功
sudo docker run hello-world
2021-6-29 更新,初学docker
docker version # 显示docker版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help # 帮助命令
帮助文档的地址:https://docs.docker.com/reference/
docker images # 显示镜像
docker search 镜像名:版本号 # 搜索镜像
docker pull 镜像名:版本号 # 下载镜像
docker rmi 镜像名:版本号 # 删除镜像
docker run 镜像名 # 启动容器
docker ps # 查看容器
# 参数,-a:all,所有容器;-q:quiet,只显示容器id
exit # 推出容器,容器会停止运行
Ctrl+P+Q #退出,但不停止容器运行
docker rm 容器id # 删除容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
docker exec -it 容器id bashShell # 交互方式执行容器
docker attach 容器id # 进入正在运行的容器
docker cp 容器id:路径名 本地路径名
docker run -d 镜像名 # 后台启动,需要有前台进程
# e. docker run -d centos /bin/sh -c "while true; do echo running; sleep 1; done"
docker run -it 镜像名 bashShell # 交互式启动
# e. docker run -it centos /bin/bash
docker logs 容器id # 查看容器日志
# e. docker logs -tf --tail 10 dce7b96171bf
docker top 容器id # 查看容器中进程信息ps
docker inspect 容器id # 查看容器元数据
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
2021-7-1 更新docker命令,后序附上docker的操作练习题
// dockerfile生成镜像
docker build -f ./test_file -t mycentos:0.1 . // 根据名为test_file的dockerfile构建名为mycentos:0.1的镜像,当前路径为上下文
// 提交镜像
docker commit -a="author" -m="comment" 容器id 目标镜像名
// e. docker commit -a="adjaisd" -m="test" ec4b test_tomcat:1.0
// 卷技术同步本地与容器
docker run -it -v 主机目录,容器内目录
// e. docker run -it -v /home/ubuntu/workspace/:/home/ centos /bin/bash
// e. docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.7
// 其中-v后的格式可以有以下组成:
// -v 容器内路径 # 路径挂载
// -v 卷名:容器内路径 # 具名挂载
// -v /宿主机路径:容器内路径 # 指定路径挂载
//docker网络的操作,留待之后用到集群的时候学习,下面给出一些示例
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
docker run -d -P --name tomcat1 --net mynet tomcat
docker exec -it 426 ping tomcat1
docker network connect mynet tomcat1
// 登录百度的镜像仓库
docker login --username=[ username ] registry.baidubce.com
// e. docker login --username=5c7c1fddee7344a79f8528eb782e12ee registry.baidubce.com
// 提交百度新建的镜像
docker tag [ImageId] registry.baidubce.com/[namespace]/[ImageName]:[镜像版本号]
docker push registry.baidubce.com/[namespace]/[ImageName]:[镜像版本号]
// 登录腾讯的镜像仓库
docker login --username=[username] ccr.ccs.tencentyun.com
// e. docker login --username=100017398854 ccr.ccs.tencentyun.com
// 提交腾讯新建的镜像
docker tag [ImageId] ccr.ccs.tencentyun.com/[namespace]/[ImageName]:[镜像版本号]
docker push ccr.ccs.tencentyun.com/[namespace]/[ImageName]:[镜像版本号]
// 登出
docker logout
网站就用静态网页展示
mkdir /server/nginx/www
mkdir /server/nginx/conf
mkdir /server/nginx/logs
git clone https://gitee.com/adjaisd/adjaisd.git // 然后输入帐号密码
cp ./adjaisd/* /server/nginx/www/
这里通过卷同步,将本地文件同步到容器中,需要同步的文件分别为:
/usr/share/nginx/html
/etc/nginx/nginx.conf
/var/log/nginx nginx
docker run -d -p 9091:80 --name nginx01 -v /server/nginx/www/:/usr/share/nginx/html -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /server/nginx/logs:/var/log/nginx nginx
可以参考知乎
root@adjaisd:~/workspace# cat auto_run.sh
docker run -d -p 9091:80 --name nginx01 -v /server/nginx/www/:/usr/share/nginx/html -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /server/nginx/logs:/var/log/nginx nginx
root@adjaisd:~/workspace# cat auto_run_script.service
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/root/workspace/auto_run.sh
[Install]
WantedBy=default.target
root@adjaisd:~/workspace# cp ./auto_run_script.service /etc/systemd/system/
root@adjaisd:~/workspace# cat /etc/systemd/system/auto_run_script.service
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/root/workspace/auto_run.sh
[Install]
WantedBy=default.target
root@adjaisd:~/workspace# systemctl daemon-reload
root@adjaisd:~/workspace# systemctl enable auto_run_script.service
Created symlink /etc/systemd/system/default.target.wants/auto_run_script.service → /etc/systemd/system/auto_run_script.service.
root@adjaisd:~/workspace# reboot
2021-7-8 更新
docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash
docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser"
docker run -p 3306:3306 --name mysql01 --restart=always -v /etc/localtime:/etc/localtime -v /
data/mysql/log/:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/mysql-files:/var/lib/mysql-files -v /data/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=12345 -d mysql
2021-07-15 更新,感谢观看-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。