docker学习记录(几分钟可以上手常用命令)

1. Google的GO语言实现;

2. Docker 容器: 除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。资源隔离等

Docker 镜像: 相当于模板

Docker 仓库(Registry): 存放模板的地方

Docker 容器(Container): 通过模板创建出来的虚拟机

容器的生命周期

# yum install -y docker

Rpm方式卸载旧docker

# rpm -qa | grep -i docker  //查找已经安装docker

# rpm -e [module1][module2][.....] //卸载docker

yum方式卸载docker

# yum -remove //另外一种卸载docker的方法

安装docker

# yum install -y docker

修改镜像地址,编辑/etc/docker/daemon.json

{

  "registry-mirrors": ["https://uulfe4bd.mirror.aliyuncs.com"]

}

启动docker

# systemctl start docker //centos7及以后版本

# service docker start   //centos6及之前的版本

如果启动时出现: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

那么修改一下再启动

常用命令< ps: 注意参数的位置否则失效 >

docker学习记录(几分钟可以上手常用命令)_emailscott docker-CSDN博客

docker images: 查看镜像

# docker pull path : 抓取镜像

如:docker pull registry.cn-hangzhou.aliyuncs.com/moensun/centos7

如:docker pull tomcat:8.5-jre10-slim

# 删除所有镜像

docker rmi $(docker images | awk '{print $3}' |tail -n +2)

创建docker 容器(可以根据一个镜像创建多个容易)

# docker run -tid 镜像ID /bin/bash     //非centos7

# docker run -tid 镜像ID /usr/sbin/init  //centos7版本。使用/usr/sbin/init解决systemctl报错不能使用的问题

docker run -tid --name master 3db94df3e006 /usr/sbin/init

#修改名称

docker rename friendly_perlman mysql_master

# docker使用cpu、内存、网络、io情况

docker stats <container id>

docker stats <container id 1> <container id 2>

docker stats -a

#指定容器进程可以在 CPU1 和 CPU3 上运行:

docker run -tid --cpuset-cpus="1,3" --name master 3db94df3e006 /usr/sbin/init

# 内存限制

Docker对CPU及内存的资源限制_docker resource limit-CSDN博客

https://www.cnblogs.com/cptao/p/10936256.html

例如: docker run -tid --name master2 --cpuset-cpus="1,3" -m 512M --memory-swap 512M -v /opt/dockerdir:/opt/dockerdir 9cecdc31480b /usr/sbin/init

可以使用 docker stats 来查看内存等情况

# 目录映射: 指定容器挂载一个数据卷,主机目录与docker目录映射

docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir 3db94df3e006 /usr/sbin/init

docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -v /opt/dockerdir2:/opt/dockerdir2 3db94df3e006 /usr/sbin/init

读权限: docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir:ro 3db94df3e006 /usr/sbin/init

# 端口映射:

-p hostPort:containerPort 映射所有 IP 地址上的指定端口到容器内部

-p ip:hostPort:containerPort 映射指定 IP 地址上的指定端口到容器内部

-p ip::containerPort 映射指定 IP 地址上的任意端口到容器内部

docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9080:80 3db94df3e006 /usr/sbin/init

或者: docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9080:80 1d496d73a1fd

# 容器互联( 在 master2 上面可以 ping master ):

docker run -tid --name master2 --link master:master2 -v /opt/dockerdir:/opt/dockerdir -p 9081:80 3db94df3e006 /usr/sbin/init

或者: docker run -tid --name master2 --link master:master2 -v /opt/dockerdir:/opt/dockerdir -p 9081:80 1d496d73a1fd

# ssh 登录容器<不搞了,麻烦>

docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9022:22 3db94df3e006 /usr/sbin/init

还需要:

yum -y install openssh-server

vi /etc/ssh/sshd_config: PermitRootLogin yes, UsePAM no, yum -y install memcached

# 启动/关闭/删除所有容器

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

# 复制文件到容器,复制docker文件到宿主主机

docker cp mycontainer:/opt/file.txt /opt/local/

docker cp /opt/local/file.txt mycontainer:/opt/

# 使用容器创建镜像

docker commit <container id> <image name>

如: docker commit 533b306d2ad6 scottszluo_centos7_java_net_tools

docker run -tid --name master -v /opt/dockerdir:/opt/dockerdir -p 9022:22 9cecdc31480b /usr/sbin/init

# 网络

docker network create --driver bridge mynet

docker network rm mynet

docker run -tid --name master --net mynet -v /opt/dockerdir:/opt/dockerdir -p 9022:22 9cecdc31480b /usr/sbin/init

查看容器列表

# docker ps [option]

# docker ps -a

查看容器详细信息

docker inspect <contain name/image name>

暂停一个容器进程

sudo docker pause [nameOfContainer]

取消暂停

sudo docker unpause [nameOfContainer]

终止一个容器

sudo docker kill [nameOfContainer]

启动容器

# docker start mysql_master

停止容器

# docker stop 容器名称

# docker stop mysql_master

进入容器

# docker exec -it 容器名称 /bin/bash

# docker exec -it master /bin/bash

删除镜像

# docker rmi 镜像ID

# docker rmi c862fd4c865c

删除容器

# docker rm 容器名称

# docker rm

Docker文件拷贝(容器<=>docker)

# docker cp 原路径 docker容器路径(系统=》docker)

# docker cp MySQL-server-5.6.38-1.el7.x86_64.rpm mysql_master2:/root/

# docker cp docker容器路径 原路径(docker=》系统)

# docker soft mysql_master:/opt

使用指定用户登录 docker:

# docker exec -ti -uroot <contaioner id> /bin/bash

# docker cp docker容器路径 原路径(docker=》系统)

# docker soft mysql_master:/opt

退出容器

# exit

=============== 安装 mysql 8 ================

# 安装 mysql
# 拉取MySQL镜像
docker pull mysql:latest

# 运行MySQL容器,将容器的3306端口映射到宿主机的3306端口
docker run --restart=always --name mysql-server -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest

# 进入MySQL容器
docker exec -it mysql-server bash

# 在容器内部,登录到MySQL
mysql -u root -p

# 当在MySQL提示符下时,运行以下SQL命令来允许远程连接
CREATE USER root@'%' ;  -- 创建用户
ALTER  USER root@'%' IDENTIFIED BY 'root';  -- 指定密码
GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;  -- 授权
FLUSH PRIVILEGES;

# 退出MySQL提示符
exit

# 重启MySQL服务
docker restart mysql-server

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值