docker学习笔记

Docker于2013年开源,为应用打包、部署平台,而非单纯的虚拟化技术。
Docker之父Solomon Hykes:Docker就好比传统的货运集装箱
Docker是管理容器的引擎
VM VS Container
传统虚拟化与容器技术对比
完全隔离、笨重|安全隔离(做不到完全隔离)、轻量
宿主机上运行虚拟机OS
共享宿主机OS,做不到完全隔离
GuestOS彼此隔离
运行密度:
一般几十个|单机支持上千容器
Docker的优势
把开发者放在第一位:
对于开发人员:构建一次,在任何地方都可以运行。
对于运维人员:配置一次,可以运行任何东西。
容器是如何工作的
客户端
Docker主机、Docker宿主机
通过镜像创建多个容器
Registry仓库
性能:rhel>oel>centos
rpm包
ce是社区版,ee是企业版
镜像的分层结构:
共享宿主的kernel
base镜像提供的是最小的Linux发行版
同一docker主机支持运行多种Linux发行版
采用分层结构的最大好处是:共享资源
CentOS 7上安装docker
https://www.cnblogs.com/yufeng218/p/8370670.html
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) 
[root@localhost ~]# uname -r
3.10.0-862.el7.x86_64
[root@localhost ~]# sudo yum update
[root@localhost ~]# docker version
-bash: docker: command not found
[root@localhost ~]# sudo yum remove docker  docker-common docker-selinux docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-
ce.repo
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# sudo yum install docker-ce
Installed:
  docker-ce.x86_64 3:19.03.2-3.el7       
[root@localhost ~]# sudo systemctl start docker
[root@localhost ~]# sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:28:55 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:27:34 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

CentOS 7修改默认yum源为阿里云yum源
[root@localhost docker]# yum install -y wget
[root@localhost docker]# vi /etc/yum.repos.d/CentOS-Base.repo
[root@localhost docker]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost docker]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-
7.repo
[root@localhost docker]# yum clean all
[root@localhost docker]# yum makecache
从docker镜像源搜索包含指定关键字的docker镜像
[root@localhost ~]# docker search java
[root@localhost ~]# docker search nginx
[root@localhost ~]# docker search redis
[root@localhost ~]# docker search mongodb
修改默认yum源之前会超时:
[root@localhost ~]# docker search java
Error response from daemon: Get https://index.docker.io/v1/search?q=java&n=25: dial tcp: lookup 
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:52947->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search nginx
Error response from daemon: Get https://index.docker.io/v1/search?q=nginx&n=25: dial tcp: lookup 
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:37764->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search redis
Error response from daemon: Get https://index.docker.io/v1/search?q=redis&n=25: dial tcp: lookup 
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:50010->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker search mongodb
Error response from daemon: Get https://index.docker.io/v1/search?q=mongodb&n=25: dial tcp: lookup 
index.docker.io on 192.168.199.1:53: read udp 192.168.199.104:58556->192.168.199.1:53: i/o timeout
[root@localhost ~]# docker pull java:8
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting 
for connection (Client.Timeout exceeded while awaiting headers)


Ubuntu 18.04.3 LTS安装docker
   15  apt-get install apt-transport-https
   16  apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
   17  apt-get install apt-transport-https
   18  apt-get install ca-certificates
   19  apt-get install curl
   20  apt-get install software-properties-common
   21  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   22  add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
   23  apt-get update
   24  apt-get install docker-ce
   25  docker version
docker-ce is already the newest version (5:19.03.2~3-0~ubuntu-bionic).

以docker容器方式部署mysql5.7数据库
docker pull mysql:5.7
docker run -p 3306:3306 --name mysqlv57 -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

yiyou@yiyouserver:~$ docker start e0da48dc5e52
e0da48dc5e52
yiyou@yiyouserver:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
e0da48dc5e52        mongo               "docker-entrypoint.s…"   2 months ago        Up 14 seconds       0.0.0.0:27017->27017/tcp   mongodb
yiyou@yiyouserver:~$ docker stop e0da48dc5e52
e0da48dc5e52
yiyou@yiyouserver:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
yiyou@yiyouserver:~$ 
根据NAMES或者CONTAINER ID删除容器
docker rm mysqlv57
docker stop gmtool
gmtool
docker rm gmtool
gmtool
docker start mysqlv2
mysqlv2
docker start mongodb
mongodb


20190912添加:
查看磁盘剩余空间
root@yiyouserver:/home/yiyou/docker# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           393M  1.5M  391M   1% /run
/dev/sda2        49G   47G     0 100% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       89M   89M     0 100% /snap/core/7396
/dev/loop1       90M   90M     0 100% /snap/core/7713
tmpfs           393M     0  393M   0% /run/user/1000
启动docker容器失败
root@yiyouserver:/home/yiyou/docker# docker run -it --name yymongodb -p 27017:27017 -v /home/yiyou/docker/mongo/data:/var/lib/mongodb -v /home/yiyou/docker/mongo/log:/var/log/mongodb/mongod.log -v /home/yiyou/docker/mongo/conf:/etc/mongod.conf mongo
2019-09-12T08:30:41.411+0000 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=dc3855422607
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] db version v4.0.10
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] allocator: tcmalloc
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] modules: none
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] build environment:
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten]     distmod: ubuntu1604
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten]     distarch: x86_64
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten]     target_arch: x86_64
2019-09-12T08:30:41.420+0000 I CONTROL  [initandlisten] options: { net: { bindIpAll: true } }
2019-09-12T08:30:41.422+0000 I STORAGE  [initandlisten] 
2019-09-12T08:30:41.422+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-09-12T08:30:41.422+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-09-12T08:30:41.423+0000 I STORAGE  [initandlisten] error creating journal dir /data/db/journal boost::filesystem::create_directory: No space left on device: "/data/db/journal"
2019-09-12T08:30:41.424+0000 I STORAGE  [initandlisten] exception in initAndListen std::exception: boost::filesystem::create_directory: No space left on device: "/data/db/journal", terminating
2019-09-12T08:30:41.425+0000 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-09-12T08:30:41.425+0000 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-09-12T08:30:41.425+0000 I CONTROL  [initandlisten] now exiting
2019-09-12T08:30:41.425+0000 I CONTROL  [initandlisten] shutting down with code:100
root@yiyouserver:/home/yiyou/docker# docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                        PORTS 
删除日志后:
root@yiyouserver:/home/yiyou/docker# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           393M  1.5M  391M   1% /run
/dev/sda2        49G   15G   33G  32% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       89M   89M     0 100% /snap/core/7396
/dev/loop1       90M   90M     0 100% /snap/core/7713
tmpfs           393M     0  393M   0% /run/user/1000

root@yiyouserver:/home/yiyou/docker# docker rm dc3855422607
dc3855422607

root@yiyouserver:/home/yiyou/docker# docker start bd05293a5145
bd05293a5145
root@yiyouserver:/home/yiyou/docker# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
bd05293a5145        mongo               "docker-entrypoint.s…"   7 minutes ago       Up 3 seconds        0.0.0.0:27018->27017/tcp   mongobak
e0da48dc5e52        mongo               "docker-entrypoint.s…"   2 months ago        Up 13 minutes       0.0.0.0:27017->27017/tcp   mongodb

20191104:
docker安装redis
拉取镜像
docker pull redis
创建redis容器
docker run -d --name redis --restart always -p 6379:6379 -v  /etc/redis/redis.conf:/etc/redis.conf -v /usr/local/redis/data:/data redis --requirepass "123456" #映射配置文件、映射数据目录
docker安装并运行redis
https://www.cnblogs.com/wuxun1997/p/11769867.html
docker pull redis:3.2
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -d redis:3.2 redis-server --appendonly yes
docker exec -it redis redis-cli
127.0.0.1:6379> INFO
127.0.0.1:6379> exit

docker安装并运行memcached
docker pull memcached
docker run -p 11211:11211 --name memcached -d memcached

linux上部署svn服务器:
  259  root 2019/11/10 12:00:42 docker pull garethflowers/svn-server
  260  root 2019/11/10 12:01:21 docker images
  261  root 2019/11/10 12:02:22 docker run --name svn-server -d -v $(pwd)/svndata:/var/opt/svn -p 3690:3690 garethflowers/svn-server
  262  root 2019/11/10 12:03:42 docker ps
  263  root 2019/11/10 12:30:04 docker exec -it svn-server /bin/sh
svnadmin create whry_hy_server
svn checkout svn://127.0.0.1:3690/whry_hy_server/ --username hanxiaohua
docker exec -it svn-server svn co svn://127.0.0.1/whry_hy_server
/var/opt/svn # svnserve --version
svnserve, version 1.12.2 (r1863366)
   compiled Aug  6 2019, 10:07:41 on x86_64-alpine-linux-musl
docker方式部署svn服务
svnserve.conf
[general]
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm = /var/opt/svn/whry_hy_server

passwd
[users]
admin=123456 

authz
[groups]
users=admin
[/]
admin = rw
[whry_hy_server:/]
@users = rw

SVN提交之后补写或改写log信息的方法:
chmod 777 pre-revprop-change
或者
chmod 755 pre-revprop-change
:set ff=unix
:wq
vi pre-revprop-change
dos2unix pre-revprop-change
vi pre-revprop-change
 
容器之间使用scp命令拷贝文件(scp使用大写的-P指定ssh端口号):
root@447a9affcdf5:/home/cpptest# scp -P32022 -r cstest/sql1.cs [email protected]:/home/cpptest/cstest
或者
root@447a9affcdf5:/home/cpptest# scp -P 32022 -r cstest/sql1.cs [email protected]:/home/cpptest/cstest
 

你可能感兴趣的:(C++,GO端游,手游开发)